{"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-030aee2172ddd4d0", "name": "Possibly dead Python function: parse_sweep_spec", "shortDescription": {"text": "Possibly dead Python function: parse_sweep_spec"}, "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-8e89f1cc43306238", "name": "Possibly dead Python function: parse_solution_spec", "shortDescription": {"text": "Possibly dead Python function: parse_solution_spec"}, "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-daad50256fa1865e", "name": "Possibly dead Python function: handle_termination", "shortDescription": {"text": "Possibly dead Python function: handle_termination"}, "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-9b788d5395467320", "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-0263eeb98e9371ea", "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-bddad54ac91793fb", "name": "Possibly dead Python function: request_shutdown", "shortDescription": {"text": "Possibly dead Python function: request_shutdown"}, "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-2dc86f82daef4a06", "name": "Possibly dead Python function: run_one", "shortDescription": {"text": "Possibly dead Python function: run_one"}, "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-178f8e1756f0a6a9", "name": "Possibly dead Python function: parse_run_spec", "shortDescription": {"text": "Possibly dead Python function: parse_run_spec"}, "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-7ace83e29db45dba", "name": "Possibly dead Python function: status_rank", "shortDescription": {"text": "Possibly dead Python function: status_rank"}, "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-efe0cc5e7b769e46", "name": "Possibly dead Python function: score", "shortDescription": {"text": "Possibly dead Python function: score"}, "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-194d31195cd581b6", "name": "Possibly dead Python function: solver_proxy_label", "shortDescription": {"text": "Possibly dead Python function: solver_proxy_label"}, "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-d2763a4d0e3e832a", "name": "Possibly dead Python function: priority_for_rule", "shortDescription": {"text": "Possibly dead Python function: priority_for_rule"}, "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-482065805552c72a", "name": "Possibly dead Python function: init_selection", "shortDescription": {"text": "Possibly dead Python function: init_selection"}, "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-bdcc84c503042bc6", "name": "Possibly dead Python function: format_segment_line", "shortDescription": {"text": "Possibly dead Python function: format_segment_line"}, "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-6fe1c486ac8f3988", "name": "Possibly dead Python function: format_delta_lower", "shortDescription": {"text": "Possibly dead Python function: format_delta_lower"}, "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-a0f6394fc3e83fd8", "name": "Possibly dead Python function: new_numeric_group", "shortDescription": {"text": "Possibly dead Python function: new_numeric_group"}, "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-018397a8d84e786c", "name": "Possibly dead Python function: new_residual_group", "shortDescription": {"text": "Possibly dead Python function: new_residual_group"}, "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-9530ee020768eaa3", "name": "Possibly dead Python function: new_phase_candidate_group", "shortDescription": {"text": "Possibly dead Python function: new_phase_candidate_group"}, "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-18c3e9665b0ab703", "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-f4108bba8ef1b17e", "name": "Privileged port 16 in use", "shortDescription": {"text": "Privileged port 16 in use"}, "fullDescription": {"text": "Port 16 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-e8ed21b3a1f7c8dc", "name": "Privileged port 59 in use", "shortDescription": {"text": "Privileged port 59 in use"}, "fullDescription": {"text": "Port 59 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d63da3583b14afc0", "name": "Dockerfile runs as root: Dockerfile", "shortDescription": {"text": "Dockerfile runs as root: Dockerfile"}, "fullDescription": {"text": "No non-root USER set. Containers running as root expand the blast radius of any vulnerability inside the image."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9eacdcd4ce09680e", "name": "Docker base image is tag-pinned but not digest-pinned: ubuntu:24.04", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: ubuntu:24.04"}, "fullDescription": {"text": "Container tags can be retagged upstream. Pin production base images to a reviewed digest (`image@sha256:...`) when reproducibility and supply-chain integrity matter."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-aa5acaa49eb8315b", "name": "Containers defined but no K8s/orchestration manifest found", "shortDescription": {"text": "Containers defined but no K8s/orchestration manifest found"}, "fullDescription": {"text": "Repo has Dockerfiles/compose but no Kubernetes/Nomad manifests. If the target deployment is K8s, the manifests may live in a separate ops repo."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9710c8d059e53154", "name": "No frontend routes/components detected", "shortDescription": {"text": "No frontend routes/components detected"}, "fullDescription": {"text": "No React/Vue/Next routes were found. This is fine for backend-only repos."}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-dcc9b4572926524e", "name": "Insecure pattern 'direct_innerhtml_assignment' in site-pages/demo/index.html:837", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in site-pages/demo/index.html:837"}, "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-7f0f9976570faa6d", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "docker/setup-qemu-action@v3 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": "medium", "confidence": 1.0}}, {"id": "scanner-68a2b8f5c8cd6b53", "name": "GitHub Actions workflow grants broad write permissions", "shortDescription": {"text": "GitHub Actions workflow grants broad write permissions"}, "fullDescription": {"text": "CI tokens with write permissions increase blast radius when an action, dependency, or PR workflow is compromised. Prefer job-level least-privilege permissions."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-27924aa79fa4a517", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/setup-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-0763d85002569570", "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-14ce8614dd03f409", "name": "GitHub Actions workflow grants broad write permissions", "shortDescription": {"text": "GitHub Actions workflow grants broad write permissions"}, "fullDescription": {"text": "CI tokens with write permissions increase blast radius when an action, dependency, or PR workflow is compromised. Prefer job-level least-privilege permissions."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-bfd830ef14de58be", "name": "Very large file: tests/test_benchmark_scripts.py (6375 lines)", "shortDescription": {"text": "Very large file: tests/test_benchmark_scripts.py (6375 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-339d353b85fc753e", "name": "Very large file: tests/test_cli_tools.py (14599 lines)", "shortDescription": {"text": "Very large file: tests/test_cli_tools.py (14599 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-d8138157c10f985f", "name": "Very large file: apps/gnss_qzss_l6_info.py (3721 lines)", "shortDescription": {"text": "Very large file: apps/gnss_qzss_l6_info.py (3721 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-c2456c54cfbbdf23", "name": "Very large file: apps/gnss_web.py (2663 lines)", "shortDescription": {"text": "Very large file: apps/gnss_web.py (2663 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-2caf24b0864f49a0", "name": "Very large file: apps/gnss_ppc_coverage_matrix.py (1159 lines)", "shortDescription": {"text": "Very large file: apps/gnss_ppc_coverage_matrix.py (1159 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-6640c737319ea774", "name": "Very large file: apps/gnss_ppc_demo.py (2374 lines)", "shortDescription": {"text": "Very large file: apps/gnss_ppc_demo.py (2374 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-ceacf4e089596d72", "name": "Very large file: scripts/analyze_ppc_coverage_quality.py (1550 lines)", "shortDescription": {"text": "Very large file: scripts/analyze_ppc_coverage_quality.py (1550 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 874 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-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-32cacbbc1ba37715", "name": "Legacy-named symbol `sys_path_backup` in tests/test_cli_tools.py:12952", "shortDescription": {"text": "Legacy-named symbol `sys_path_backup` in tests/test_cli_tools.py:12952"}, "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-58dd94d101d1dd27", "name": "Network/subprocess call without timeout or try/except \u2014 apps/gnss_scorpion_moving_base_signoff.py:131", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 apps/gnss_scorpion_moving_base_signoff.py:131"}, "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-91f6a3156b46de00", "name": "Network/subprocess call without timeout or try/except \u2014 apps/gnss_ppp_iers_sub_daily_eop_bench.py:182", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 apps/gnss_ppp_iers_sub_daily_eop_bench.py:182"}, "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-f4ba7a75cdaf3eb2", "name": "Legacy-named symbol `link_or_copy` in apps/gnss_ppc_taroz_amb_pdc_smoke.py:203", "shortDescription": {"text": "Legacy-named symbol `link_or_copy` in apps/gnss_ppc_taroz_amb_pdc_smoke.py:203"}, "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-fe676ee5682c4e35", "name": "Network/subprocess call without timeout or try/except \u2014 apps/gnss_ppc_taroz_amb_pdc_smoke.py:361", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 apps/gnss_ppc_taroz_amb_pdc_smoke.py:361"}, "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-715e70ddc2750ba2", "name": "Network/subprocess call without timeout or try/except \u2014 apps/gnss_ppp_kinematic_signoff.py:250", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 apps/gnss_ppp_kinematic_signoff.py:250"}, "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-cc836a7611100cc2", "name": "Network/subprocess call without timeout or try/except \u2014 apps/gnss_rtk_kinematic_signoff.py:53", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 apps/gnss_rtk_kinematic_signoff.py:53"}, "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-8a32da918a3fc84c", "name": "Network/subprocess call without timeout or try/except \u2014 apps/gnss_taroz_pd_dogfood.py:178", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 apps/gnss_taroz_pd_dogfood.py:178"}, "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-6c87293cdeb5d526", "name": "Commented-code block (9 lines) in apps/gnss_ppp_iers_ocean_loading_bench.py:216", "shortDescription": {"text": "Commented-code block (9 lines) in apps/gnss_ppp_iers_ocean_loading_bench.py:216"}, "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-1fcfcd8d703058a0", "name": "Network/subprocess call without timeout or try/except \u2014 apps/gnss_ppp_iers_ocean_loading_bench.py:162", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 apps/gnss_ppp_iers_ocean_loading_bench.py:162"}, "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-4ab05016186b56be", "name": "Stub function `log_message` (body is just `pass`/`return`) \u2014 apps/gnss_web.py:2482", "shortDescription": {"text": "Stub function `log_message` (body is just `pass`/`return`) \u2014 apps/gnss_web.py:2482"}, "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-3bf18a3720839f12", "name": "Network/subprocess call without timeout or try/except \u2014 apps/gnss_short_baseline_signoff.py:87", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 apps/gnss_short_baseline_signoff.py:87"}, "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-4ba4466df3222f0b", "name": "Network/subprocess call without timeout or try/except \u2014 apps/gnss_odaiba_benchmark.py:220", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 apps/gnss_odaiba_benchmark.py:220"}, "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-8a4747007d64cb2f", "name": "Network/subprocess call without timeout or try/except \u2014 apps/gnss_ppc_rtk_signoff.py:799", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 apps/gnss_ppc_rtk_signoff.py:799"}, "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-46146742015c4391", "name": "Network/subprocess call without timeout or try/except \u2014 apps/gnss_taroz_oracle_suite.py:234", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 apps/gnss_taroz_oracle_suite.py:234"}, "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-07bad72604eae79f", "name": "Network/subprocess call without timeout or try/except \u2014 apps/gnss_taroz_observable_dogfood.py:283", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 apps/gnss_taroz_observable_dogfood.py:283"}, "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-dc0c3b230b85f09b", "name": "Network/subprocess call without timeout or try/except \u2014 apps/gnss_robotics_smoke.py:330", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 apps/gnss_robotics_smoke.py:330"}, "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-12afcfee97547cce", "name": "Network/subprocess call without timeout or try/except \u2014 apps/gnss_ppp_products_signoff.py:125", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 apps/gnss_ppp_products_signoff.py:125"}, "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-e276fe2206b2e129", "name": "Network/subprocess call without timeout or try/except \u2014 apps/gnss_odaiba_scan.py:151", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 apps/gnss_odaiba_scan.py:151"}, "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-088bbca079032dfc", "name": "Network/subprocess call without timeout or try/except \u2014 apps/gnss_live_signoff.py:185", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 apps/gnss_live_signoff.py:185"}, "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-2f5131035834332e", "name": "Network/subprocess call without timeout or try/except \u2014 apps/gnss_taroz_pc_dogfood.py:187", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 apps/gnss_taroz_pc_dogfood.py:187"}, "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-d47d14e59aeca8b3", "name": "Network/subprocess call without timeout or try/except \u2014 apps/gnss_taroz_pos_vel_amb_pdc_dogfood.py:478", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 apps/gnss_taroz_pos_vel_amb_pdc_dogfood.py:478"}, "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-fdde5aea395c30d8", "name": "Network/subprocess call without timeout or try/except \u2014 apps/gnss_ppp_iers_truth_bench.py:226", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 apps/gnss_ppp_iers_truth_bench.py:226"}, "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-10c03d604341a538", "name": "Network/subprocess call without timeout or try/except \u2014 apps/gnss_mode_compare.py:495", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 apps/gnss_mode_compare.py:495"}, "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-83cf2c6b99c96882", "name": "Network/subprocess call without timeout or try/except \u2014 apps/gnss_ppp_iers_atm_tidal_loading_bench.py:172", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 apps/gnss_ppp_iers_atm_tidal_loading_bench.py:172"}, "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-b0f824090f326bed", "name": "Network/subprocess call without timeout or try/except \u2014 apps/gnss_moving_base_signoff.py:829", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 apps/gnss_moving_base_signoff.py:829"}, "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-a79cee9daafefc2f", "name": "Network/subprocess call without timeout or try/except \u2014 apps/gnss_ppc_spp_policy_suite.py:208", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 apps/gnss_ppc_spp_policy_suite.py:208"}, "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-85213473ba95e0b3", "name": "Network/subprocess call without timeout or try/except \u2014 apps/gnss_ppc_coverage_matrix.py:661", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 apps/gnss_ppc_coverage_matrix.py:661"}, "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-4304c6a5a53e9097", "name": "Network/subprocess call without timeout or try/except \u2014 apps/gnss_ppp_static_signoff.py:229", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 apps/gnss_ppp_static_signoff.py:229"}, "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-d16c13c51d6af09f", "name": "Network/subprocess call without timeout or try/except \u2014 apps/gnss_runtime.py:115", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 apps/gnss_runtime.py:115"}, "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-a746bd76710e836d", "name": "Network/subprocess call without timeout or try/except \u2014 apps/gnss_ppp_iers_pole_tide_bench.py:174", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 apps/gnss_ppp_iers_pole_tide_bench.py:174"}, "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-3ef11d224c79883c", "name": "Network/subprocess call without timeout or try/except \u2014 apps/gnss_ppc_demo.py:718", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 apps/gnss_ppc_demo.py:718"}, "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-6420ce4d3d497166", "name": "Network/subprocess call without timeout or try/except \u2014 apps/gnss_clas_ppp.py:513", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 apps/gnss_clas_ppp.py:513"}, "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-ada0afbc756fc190", "name": "Network/subprocess call without timeout or try/except \u2014 apps/gnss_taroz_p_dogfood.py:182", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 apps/gnss_taroz_p_dogfood.py:182"}, "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-8760063e84ae624a", "name": "Commented-code block (9 lines) in apps/gnss_ppp_iers_solid_tide_bench.py:212", "shortDescription": {"text": "Commented-code block (9 lines) in apps/gnss_ppp_iers_solid_tide_bench.py:212"}, "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-7b72120c6b8f9063", "name": "Network/subprocess call without timeout or try/except \u2014 apps/gnss_ppp_iers_solid_tide_bench.py:158", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 apps/gnss_ppp_iers_solid_tide_bench.py:158"}, "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-267de135508ed1fe", "name": "Network/subprocess call without timeout or try/except \u2014 scripts/run_ppc_ratio_gating_selector_sweep.py:283", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 scripts/run_ppc_ratio_gating_selector_sweep.py:283"}, "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-aec9ae60d1e335ca", "name": "Network/subprocess call without timeout or try/except \u2014 scripts/run_ppc_realtime_guard_sweep.py:178", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 scripts/run_ppc_realtime_guard_sweep.py:178"}, "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-834cda0d0eec8191", "name": "Legacy-named symbol `ppc_coverage_matrix_nis_5_v2` in scripts/run_ppc_multi_candidate_selector_matrix.py:80", "shortDescription": {"text": "Legacy-named symbol `ppc_coverage_matrix_nis_5_v2` in scripts/run_ppc_multi_candidate_selector_matrix.py:80"}, "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-9d19c0220b839f2f", "name": "Network/subprocess call without timeout or try/except \u2014 scripts/run_ppc_multi_candidate_selector_matrix.py:283", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 scripts/run_ppc_multi_candidate_selector_matrix.py:283"}, "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-d0f38d0558e18d98", "name": "Legacy-named symbol `hold_used_preserved_backup` in scripts/analysis/lineage_divergence_diff.py:28", "shortDescription": {"text": "Legacy-named symbol `hold_used_preserved_backup` in scripts/analysis/lineage_divergence_diff.py:28"}, "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-decb066e89180918", "name": "Network/subprocess call without timeout or try/except \u2014 scripts/ci/run_optional_ppp_products_signoff.py:235", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 scripts/ci/run_optional_ppp_products_signoff.py:235"}, "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-706d92a6d0ee35c4", "name": "Network/subprocess call without timeout or try/except \u2014 scripts/ci/run_optional_rtk_signoffs.py:253", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 scripts/ci/run_optional_rtk_signoffs.py:253"}, "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-6324657ce3f351c9", "name": "Network/subprocess call without timeout or try/except \u2014 python/libgnsspp/__init__.py:46", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 python/libgnsspp/__init__.py:46"}, "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-c2e368eeff1780e6", "name": "Network/subprocess call without timeout or try/except \u2014 experiments/ppp_ar/run_experiments.py:689", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 experiments/ppp_ar/run_experiments.py:689"}, "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-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:\napps/gnss_dd_residuals_html.py:sx, apps/gnss_dd_residuals_html.py:sx, apps/gnss_dd_residuals_html.py:sx\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:\napps/gnss_dd_residuals_html.py:sy, apps/gnss_dd_residuals_html.py:sy\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-02525d39071dd2c7", "name": "Near-duplicate function bodies in 5 places", "shortDescription": {"text": "Near-duplicate function bodies in 5 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\napps/gnss_scorpion_moving_base_signoff.py:parse_args, apps/gnss_ppc_rtk_signoff.py:parse_args, apps/gnss_ppp_products_signoff.py:parse_args, apps/gnss_live_signoff.py:parse_args\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-33a6b62e30ce7ab4", "name": "Near-duplicate function bodies in 6 places", "shortDescription": {"text": "Near-duplicate function bodies in 6 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\napps/gnss_ppp_iers_sub_daily_eop_bench.py:parse_args, apps/gnss_ppp_iers_ocean_loading_bench.py:parse_args, apps/gnss_ppp_iers_truth_bench.py:parse_args, apps/gnss_ppp_iers_atm_tidal_loading_bench.py:parse_args\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:\napps/gnss_ppp_iers_sub_daily_eop_bench.py:epoch_key, apps/gnss_ppp_iers_ocean_loading_bench.py:epoch_key, apps/gnss_ppp_iers_pole_tide_bench.py:epoch_key, apps/gnss_ppp_iers_solid_tide_bench.py:epoch_key\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-0027e313ade46c8f", "name": "Near-duplicate function bodies in 7 places", "shortDescription": {"text": "Near-duplicate function bodies in 7 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\napps/gnss_ppc_taroz_amb_pdc_smoke.py:find_binary, apps/gnss_rcv.py:find_binary, apps/gnss_taroz_pd_dogfood.py:find_binary, apps/gnss_taroz_observable_dogfood.py:find_binary\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-76a2f6818267a9a8", "name": "Near-duplicate function bodies in 8 places", "shortDescription": {"text": "Near-duplicate function bodies in 8 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\napps/gnss_ppp_kinematic_signoff.py:read_pos_records, apps/gnss_ppp_kinematic_signoff.py:read_malib_xyz_records, apps/gnss_rtk_kinematic_signoff.py:read_pos_records, apps/gnss_short_baseline_signoff.py:read_pos_records\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/18531"}, "properties": {"repository": "rsasaki0109/gnssplusplus-library", "repoUrl": "https://github.com/rsasaki0109/gnssplusplus-library", "branch": "main"}, "results": [{"ruleId": "scanner-030aee2172ddd4d0", "level": "note", "message": {"text": "Possibly dead Python function: parse_sweep_spec"}, "properties": {"repobilityId": "6d073fdc1837d0a8", "scanner": "scanner-primary", "fingerprint": "030aee2172ddd4d0", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/gnss_ppc_spp_policy_report.py:58"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-8e89f1cc43306238", "level": "note", "message": {"text": "Possibly dead Python function: parse_solution_spec"}, "properties": {"repobilityId": "e5576cd3d2ab302c", "scanner": "scanner-primary", "fingerprint": "8e89f1cc43306238", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/gnss_ppc_spp_compare.py:77"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-daad50256fa1865e", "level": "note", "message": {"text": "Possibly dead Python function: handle_termination"}, "properties": {"repobilityId": "a91f258d5e74782f", "scanner": "scanner-primary", "fingerprint": "daad50256fa1865e", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/gnss_rcv.py:493"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-9b788d5395467320", "level": "note", "message": {"text": "Possibly dead Python function: log_message"}, "properties": {"repobilityId": "965f3150b4af5b2e", "scanner": "scanner-primary", "fingerprint": "9b788d5395467320", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/gnss_web.py:2482"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-0263eeb98e9371ea", "level": "note", "message": {"text": "Possibly dead Python function: do_GET"}, "properties": {"repobilityId": "2d943bb45e4f13bd", "scanner": "scanner-primary", "fingerprint": "0263eeb98e9371ea", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/gnss_web.py:2497"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-bddad54ac91793fb", "level": "note", "message": {"text": "Possibly dead Python function: request_shutdown"}, "properties": {"repobilityId": "da031b332ae0c261", "scanner": "scanner-primary", "fingerprint": "bddad54ac91793fb", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/gnss_web.py:2635"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-2dc86f82daef4a06", "level": "note", "message": {"text": "Possibly dead Python function: run_one"}, "properties": {"repobilityId": "527a5104cdfde36f", "scanner": "scanner-primary", "fingerprint": "2dc86f82daef4a06", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/gnss_odaiba_benchmark.py:407"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-178f8e1756f0a6a9", "level": "note", "message": {"text": "Possibly dead Python function: parse_run_spec"}, "properties": {"repobilityId": "a3726277a9097eb8", "scanner": "scanner-primary", "fingerprint": "178f8e1756f0a6a9", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/gnss_ppc_spp_policy_suite.py:52"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-7ace83e29db45dba", "level": "note", "message": {"text": "Possibly dead Python function: status_rank"}, "properties": {"repobilityId": "81f88a03a63a01d8", "scanner": "scanner-primary", "fingerprint": "7ace83e29db45dba", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/gnss_ros2_bag_doctor.py:87"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-efe0cc5e7b769e46", "level": "note", "message": {"text": "Possibly dead Python function: score"}, "properties": {"repobilityId": "379227b163d3203e", "scanner": "scanner-primary", "fingerprint": "efe0cc5e7b769e46", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/generate_driving_comparison.py:442"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-194d31195cd581b6", "level": "note", "message": {"text": "Possibly dead Python function: solver_proxy_label"}, "properties": {"repobilityId": "39799ec0d3668da2", "scanner": "scanner-primary", "fingerprint": "194d31195cd581b6", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/generate_driving_comparison.py:512"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d2763a4d0e3e832a", "level": "note", "message": {"text": "Possibly dead Python function: priority_for_rule"}, "properties": {"repobilityId": "18edfd00d905fed3", "scanner": "scanner-primary", "fingerprint": "d2763a4d0e3e832a", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/analyze_ppc_segment_selector_loro_blind.py:236"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-482065805552c72a", "level": "note", "message": {"text": "Possibly dead Python function: init_selection"}, "properties": {"repobilityId": "b75c5806f5ee895e", "scanner": "scanner-primary", "fingerprint": "482065805552c72a", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/analyze_ppc_segment_selector_loro_blind_stream.py:267"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-bdcc84c503042bc6", "level": "note", "message": {"text": "Possibly dead Python function: format_segment_line"}, "properties": {"repobilityId": "089496d41d5091d6", "scanner": "scanner-primary", "fingerprint": "bdcc84c503042bc6", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/analyze_ppc_coverage_quality.py:1324"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-6fe1c486ac8f3988", "level": "note", "message": {"text": "Possibly dead Python function: format_delta_lower"}, "properties": {"repobilityId": "c2f9ee52bb4e2e53", "scanner": "scanner-primary", "fingerprint": "6fe1c486ac8f3988", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/generate_odaiba_scorecard.py:42"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a0f6394fc3e83fd8", "level": "note", "message": {"text": "Possibly dead Python function: new_numeric_group"}, "properties": {"repobilityId": "8bd15a30d45726a6", "scanner": "scanner-primary", "fingerprint": "a0f6394fc3e83fd8", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/analysis/madoca_satellite_set_diff.py:251"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-018397a8d84e786c", "level": "note", "message": {"text": "Possibly dead Python function: new_residual_group"}, "properties": {"repobilityId": "f30bd3a574dc47eb", "scanner": "scanner-primary", "fingerprint": "018397a8d84e786c", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/analysis/madoca_satellite_set_diff.py:378"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-9530ee020768eaa3", "level": "note", "message": {"text": "Possibly dead Python function: new_phase_candidate_group"}, "properties": {"repobilityId": "dabc6354437ddeda", "scanner": "scanner-primary", "fingerprint": "9530ee020768eaa3", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/analysis/madoca_satellite_set_diff.py:512"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-18c3e9665b0ab703", "level": "note", "message": {"text": "Possibly dead Python function: generate_launch_description"}, "properties": {"repobilityId": "d9a90a15bddc43f1", "scanner": "scanner-primary", "fingerprint": "18c3e9665b0ab703", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "ros2/gnss_raw_driver/launch/gnss_raw_driver.launch.py:9"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f4108bba8ef1b17e", "level": "warning", "message": {"text": "Privileged port 16 in use"}, "properties": {"repobilityId": "d31009168c502ace", "scanner": "scanner-primary", "fingerprint": "f4108bba8ef1b17e", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/compare_with_claslib.sh"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e8ed21b3a1f7c8dc", "level": "warning", "message": {"text": "Privileged port 59 in use"}, "properties": {"repobilityId": "6c14a9dab4958e92", "scanner": "scanner-primary", "fingerprint": "e8ed21b3a1f7c8dc", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/compare_with_claslib.sh"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d63da3583b14afc0", "level": "warning", "message": {"text": "Dockerfile runs as root: Dockerfile"}, "properties": {"repobilityId": "a2ed1bd120e507db", "scanner": "scanner-primary", "fingerprint": "d63da3583b14afc0", "layer": "hardware", "severity": "medium", "confidence": 1.0, "tags": ["security", "container"]}}, {"ruleId": "scanner-9eacdcd4ce09680e", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: ubuntu:24.04"}, "properties": {"repobilityId": "72d0fa5ef5dd3013", "scanner": "scanner-primary", "fingerprint": "9eacdcd4ce09680e", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-9eacdcd4ce09680e", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: ubuntu:24.04"}, "properties": {"repobilityId": "e9729faa5f82bc30", "scanner": "scanner-primary", "fingerprint": "9eacdcd4ce09680e", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 28}}}]}, {"ruleId": "scanner-aa5acaa49eb8315b", "level": "note", "message": {"text": "Containers defined but no K8s/orchestration manifest found"}, "properties": {"repobilityId": "b230ea9b68736081", "scanner": "scanner-primary", "fingerprint": "aa5acaa49eb8315b", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["coverage", "deployment"]}}, {"ruleId": "scanner-9710c8d059e53154", "level": "none", "message": {"text": "No frontend routes/components detected"}, "properties": {"repobilityId": "44ca61485762e494", "scanner": "scanner-primary", "fingerprint": "9710c8d059e53154", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["coverage"]}}, {"ruleId": "scanner-dcc9b4572926524e", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in site-pages/demo/index.html:837"}, "properties": {"repobilityId": "d353c6fc2089b431", "scanner": "scanner-primary", "fingerprint": "dcc9b4572926524e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "site-pages/demo/index.html"}, "region": {"startLine": 837}}}]}, {"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-7f0f9976570faa6d", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "5d8aeac5eb6f4868", "scanner": "scanner-primary", "fingerprint": "7f0f9976570faa6d", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/docker.yml"}, "region": {"startLine": 20}}}]}, {"ruleId": "scanner-7f0f9976570faa6d", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "49f477cbbe083433", "scanner": "scanner-primary", "fingerprint": "7f0f9976570faa6d", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/docker.yml"}, "region": {"startLine": 23}}}]}, {"ruleId": "scanner-7f0f9976570faa6d", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "19a3e05b43a287b5", "scanner": "scanner-primary", "fingerprint": "7f0f9976570faa6d", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/docker.yml"}, "region": {"startLine": 26}}}]}, {"ruleId": "scanner-7f0f9976570faa6d", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "d6aa7210cf6c969d", "scanner": "scanner-primary", "fingerprint": "7f0f9976570faa6d", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/docker.yml"}, "region": {"startLine": 34}}}]}, {"ruleId": "scanner-7f0f9976570faa6d", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "5f7d5d8fad9ae56d", "scanner": "scanner-primary", "fingerprint": "7f0f9976570faa6d", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/docker.yml"}, "region": {"startLine": 44}}}]}, {"ruleId": "scanner-68a2b8f5c8cd6b53", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "0036b33690fe05ae", "scanner": "scanner-primary", "fingerprint": "68a2b8f5c8cd6b53", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/docker.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "04f57d208548fcef", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 66}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "bd7f3c1c34d83159", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 106}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "bd7f3c1c34d83159", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 201}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "bd7f3c1c34d83159", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 222}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "bd7f3c1c34d83159", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 252}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "bd7f3c1c34d83159", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 271}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "bd7f3c1c34d83159", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 311}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "ae16880318b99912", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 338}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "bd7f3c1c34d83159", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 388}}}]}, {"ruleId": "scanner-0763d85002569570", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "73acec026f584eb1", "scanner": "scanner-primary", "fingerprint": "0763d85002569570", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/docs.yml"}, "region": {"startLine": 40}}}]}, {"ruleId": "scanner-0763d85002569570", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "0ea595cee9e99258", "scanner": "scanner-primary", "fingerprint": "0763d85002569570", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/docs.yml"}, "region": {"startLine": 54}}}]}, {"ruleId": "scanner-0763d85002569570", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "4289fb2fbaf82766", "scanner": "scanner-primary", "fingerprint": "0763d85002569570", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/docs.yml"}, "region": {"startLine": 68}}}]}, {"ruleId": "scanner-14ce8614dd03f409", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "81c5c697653f94e8", "scanner": "scanner-primary", "fingerprint": "14ce8614dd03f409", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/docs.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-bfd830ef14de58be", "level": "note", "message": {"text": "Very large file: tests/test_benchmark_scripts.py (6375 lines)"}, "properties": {"repobilityId": "8bb72aedbfcd5da2", "scanner": "scanner-primary", "fingerprint": "bfd830ef14de58be", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-339d353b85fc753e", "level": "note", "message": {"text": "Very large file: tests/test_cli_tools.py (14599 lines)"}, "properties": {"repobilityId": "83117bd8ae9908b6", "scanner": "scanner-primary", "fingerprint": "339d353b85fc753e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-d8138157c10f985f", "level": "note", "message": {"text": "Very large file: apps/gnss_qzss_l6_info.py (3721 lines)"}, "properties": {"repobilityId": "3e8bfe8ceaa6e177", "scanner": "scanner-primary", "fingerprint": "d8138157c10f985f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-c2456c54cfbbdf23", "level": "note", "message": {"text": "Very large file: apps/gnss_web.py (2663 lines)"}, "properties": {"repobilityId": "15dc38bd8cd4bf25", "scanner": "scanner-primary", "fingerprint": "c2456c54cfbbdf23", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-2caf24b0864f49a0", "level": "note", "message": {"text": "Very large file: apps/gnss_ppc_coverage_matrix.py (1159 lines)"}, "properties": {"repobilityId": "0f1361888766dddd", "scanner": "scanner-primary", "fingerprint": "2caf24b0864f49a0", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-6640c737319ea774", "level": "note", "message": {"text": "Very large file: apps/gnss_ppc_demo.py (2374 lines)"}, "properties": {"repobilityId": "d390241c917621d8", "scanner": "scanner-primary", "fingerprint": "6640c737319ea774", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ceacf4e089596d72", "level": "note", "message": {"text": "Very large file: scripts/analyze_ppc_coverage_quality.py (1550 lines)"}, "properties": {"repobilityId": "cc6576bd95e82358", "scanner": "scanner-primary", "fingerprint": "ceacf4e089596d72", "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": "dc22169346e13fc2", "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": "c8b78105e49bb26c", "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": "ab24a28daea383a3", "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": "2566a90a29ca0778", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-32cacbbc1ba37715", "level": "note", "message": {"text": "Legacy-named symbol `sys_path_backup` in tests/test_cli_tools.py:12952"}, "properties": {"repobilityId": "f18fb65f7ed36a5a", "scanner": "scanner-primary", "fingerprint": "32cacbbc1ba37715", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-58dd94d101d1dd27", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 apps/gnss_scorpion_moving_base_signoff.py:131"}, "properties": {"repobilityId": "0543508cafbcefec", "scanner": "scanner-primary", "fingerprint": "58dd94d101d1dd27", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-91f6a3156b46de00", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 apps/gnss_ppp_iers_sub_daily_eop_bench.py:182"}, "properties": {"repobilityId": "75018f34312d1039", "scanner": "scanner-primary", "fingerprint": "91f6a3156b46de00", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f4ba7a75cdaf3eb2", "level": "note", "message": {"text": "Legacy-named symbol `link_or_copy` in apps/gnss_ppc_taroz_amb_pdc_smoke.py:203"}, "properties": {"repobilityId": "8fb4bf2a74095056", "scanner": "scanner-primary", "fingerprint": "f4ba7a75cdaf3eb2", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-fe676ee5682c4e35", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 apps/gnss_ppc_taroz_amb_pdc_smoke.py:361"}, "properties": {"repobilityId": "21c59da356a7b58e", "scanner": "scanner-primary", "fingerprint": "fe676ee5682c4e35", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-715e70ddc2750ba2", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 apps/gnss_ppp_kinematic_signoff.py:250"}, "properties": {"repobilityId": "80cd3a6c06459208", "scanner": "scanner-primary", "fingerprint": "715e70ddc2750ba2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-cc836a7611100cc2", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 apps/gnss_rtk_kinematic_signoff.py:53"}, "properties": {"repobilityId": "9d5a7a3b03d37070", "scanner": "scanner-primary", "fingerprint": "cc836a7611100cc2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-8a32da918a3fc84c", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 apps/gnss_taroz_pd_dogfood.py:178"}, "properties": {"repobilityId": "d25cde5a8ce67841", "scanner": "scanner-primary", "fingerprint": "8a32da918a3fc84c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6c87293cdeb5d526", "level": "none", "message": {"text": "Commented-code block (9 lines) in apps/gnss_ppp_iers_ocean_loading_bench.py:216"}, "properties": {"repobilityId": "bf03d2cbb944eafa", "scanner": "scanner-primary", "fingerprint": "6c87293cdeb5d526", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1fcfcd8d703058a0", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 apps/gnss_ppp_iers_ocean_loading_bench.py:162"}, "properties": {"repobilityId": "83f92ae182287524", "scanner": "scanner-primary", "fingerprint": "1fcfcd8d703058a0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-4ab05016186b56be", "level": "note", "message": {"text": "Stub function `log_message` (body is just `pass`/`return`) \u2014 apps/gnss_web.py:2482"}, "properties": {"repobilityId": "e75afa80ee445b77", "scanner": "scanner-primary", "fingerprint": "4ab05016186b56be", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "empty-handler", "dead-code"]}}, {"ruleId": "scanner-3bf18a3720839f12", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 apps/gnss_short_baseline_signoff.py:87"}, "properties": {"repobilityId": "375a9aa3b97e09fc", "scanner": "scanner-primary", "fingerprint": "3bf18a3720839f12", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-4ba4466df3222f0b", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 apps/gnss_odaiba_benchmark.py:220"}, "properties": {"repobilityId": "351994fff758fdce", "scanner": "scanner-primary", "fingerprint": "4ba4466df3222f0b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-8a4747007d64cb2f", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 apps/gnss_ppc_rtk_signoff.py:799"}, "properties": {"repobilityId": "bdb2173d142f83d9", "scanner": "scanner-primary", "fingerprint": "8a4747007d64cb2f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-46146742015c4391", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 apps/gnss_taroz_oracle_suite.py:234"}, "properties": {"repobilityId": "85eaa637ce77e959", "scanner": "scanner-primary", "fingerprint": "46146742015c4391", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-07bad72604eae79f", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 apps/gnss_taroz_observable_dogfood.py:283"}, "properties": {"repobilityId": "60b782043a011fd4", "scanner": "scanner-primary", "fingerprint": "07bad72604eae79f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-dc0c3b230b85f09b", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 apps/gnss_robotics_smoke.py:330"}, "properties": {"repobilityId": "04fa5666c398e9d8", "scanner": "scanner-primary", "fingerprint": "dc0c3b230b85f09b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-12afcfee97547cce", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 apps/gnss_ppp_products_signoff.py:125"}, "properties": {"repobilityId": "7ed06e58038fc243", "scanner": "scanner-primary", "fingerprint": "12afcfee97547cce", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e276fe2206b2e129", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 apps/gnss_odaiba_scan.py:151"}, "properties": {"repobilityId": "88c08db4b76174b8", "scanner": "scanner-primary", "fingerprint": "e276fe2206b2e129", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-088bbca079032dfc", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 apps/gnss_live_signoff.py:185"}, "properties": {"repobilityId": "4a0f14e84c5e15e3", "scanner": "scanner-primary", "fingerprint": "088bbca079032dfc", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2f5131035834332e", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 apps/gnss_taroz_pc_dogfood.py:187"}, "properties": {"repobilityId": "7461816a3b6912fc", "scanner": "scanner-primary", "fingerprint": "2f5131035834332e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d47d14e59aeca8b3", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 apps/gnss_taroz_pos_vel_amb_pdc_dogfood.py:478"}, "properties": {"repobilityId": "fc6718bd11798fa5", "scanner": "scanner-primary", "fingerprint": "d47d14e59aeca8b3", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-fdde5aea395c30d8", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 apps/gnss_ppp_iers_truth_bench.py:226"}, "properties": {"repobilityId": "b330fad1bdb8e049", "scanner": "scanner-primary", "fingerprint": "fdde5aea395c30d8", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-10c03d604341a538", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 apps/gnss_mode_compare.py:495"}, "properties": {"repobilityId": "4bc8caaa8edbaac2", "scanner": "scanner-primary", "fingerprint": "10c03d604341a538", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-83cf2c6b99c96882", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 apps/gnss_ppp_iers_atm_tidal_loading_bench.py:172"}, "properties": {"repobilityId": "4fa9af1ed2ca8e77", "scanner": "scanner-primary", "fingerprint": "83cf2c6b99c96882", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b0f824090f326bed", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 apps/gnss_moving_base_signoff.py:829"}, "properties": {"repobilityId": "a356fa9628c3ccde", "scanner": "scanner-primary", "fingerprint": "b0f824090f326bed", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-a79cee9daafefc2f", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 apps/gnss_ppc_spp_policy_suite.py:208"}, "properties": {"repobilityId": "32cb2437714b29fd", "scanner": "scanner-primary", "fingerprint": "a79cee9daafefc2f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-85213473ba95e0b3", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 apps/gnss_ppc_coverage_matrix.py:661"}, "properties": {"repobilityId": "0c0eda5cb272a80a", "scanner": "scanner-primary", "fingerprint": "85213473ba95e0b3", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-4304c6a5a53e9097", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 apps/gnss_ppp_static_signoff.py:229"}, "properties": {"repobilityId": "65c6b8ed50813334", "scanner": "scanner-primary", "fingerprint": "4304c6a5a53e9097", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d16c13c51d6af09f", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 apps/gnss_runtime.py:115"}, "properties": {"repobilityId": "530a8b190e968057", "scanner": "scanner-primary", "fingerprint": "d16c13c51d6af09f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-a746bd76710e836d", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 apps/gnss_ppp_iers_pole_tide_bench.py:174"}, "properties": {"repobilityId": "207392e79493d86a", "scanner": "scanner-primary", "fingerprint": "a746bd76710e836d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-3ef11d224c79883c", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 apps/gnss_ppc_demo.py:718"}, "properties": {"repobilityId": "646667647270344d", "scanner": "scanner-primary", "fingerprint": "3ef11d224c79883c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6420ce4d3d497166", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 apps/gnss_clas_ppp.py:513"}, "properties": {"repobilityId": "63018958d8ee94b6", "scanner": "scanner-primary", "fingerprint": "6420ce4d3d497166", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ada0afbc756fc190", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 apps/gnss_taroz_p_dogfood.py:182"}, "properties": {"repobilityId": "c32f997ae85e53e8", "scanner": "scanner-primary", "fingerprint": "ada0afbc756fc190", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-8760063e84ae624a", "level": "none", "message": {"text": "Commented-code block (9 lines) in apps/gnss_ppp_iers_solid_tide_bench.py:212"}, "properties": {"repobilityId": "695bff3e733615ec", "scanner": "scanner-primary", "fingerprint": "8760063e84ae624a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7b72120c6b8f9063", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 apps/gnss_ppp_iers_solid_tide_bench.py:158"}, "properties": {"repobilityId": "0fe09523018959ac", "scanner": "scanner-primary", "fingerprint": "7b72120c6b8f9063", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-267de135508ed1fe", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 scripts/run_ppc_ratio_gating_selector_sweep.py:283"}, "properties": {"repobilityId": "071dad3dea86d7af", "scanner": "scanner-primary", "fingerprint": "267de135508ed1fe", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-aec9ae60d1e335ca", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 scripts/run_ppc_realtime_guard_sweep.py:178"}, "properties": {"repobilityId": "094ed1ac0e375d02", "scanner": "scanner-primary", "fingerprint": "aec9ae60d1e335ca", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-834cda0d0eec8191", "level": "note", "message": {"text": "Legacy-named symbol `ppc_coverage_matrix_nis_5_v2` in scripts/run_ppc_multi_candidate_selector_matrix.py:80"}, "properties": {"repobilityId": "43d11d5a3f92a369", "scanner": "scanner-primary", "fingerprint": "834cda0d0eec8191", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-9d19c0220b839f2f", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 scripts/run_ppc_multi_candidate_selector_matrix.py:283"}, "properties": {"repobilityId": "03351649570eb744", "scanner": "scanner-primary", "fingerprint": "9d19c0220b839f2f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d0f38d0558e18d98", "level": "note", "message": {"text": "Legacy-named symbol `hold_used_preserved_backup` in scripts/analysis/lineage_divergence_diff.py:28"}, "properties": {"repobilityId": "97ed7e296b9e9afe", "scanner": "scanner-primary", "fingerprint": "d0f38d0558e18d98", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-decb066e89180918", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 scripts/ci/run_optional_ppp_products_signoff.py:235"}, "properties": {"repobilityId": "a70b42388c6ab75c", "scanner": "scanner-primary", "fingerprint": "decb066e89180918", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-706d92a6d0ee35c4", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 scripts/ci/run_optional_rtk_signoffs.py:253"}, "properties": {"repobilityId": "4804f2cc1db23404", "scanner": "scanner-primary", "fingerprint": "706d92a6d0ee35c4", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6324657ce3f351c9", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 python/libgnsspp/__init__.py:46"}, "properties": {"repobilityId": "1786a090ee070d5f", "scanner": "scanner-primary", "fingerprint": "6324657ce3f351c9", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c2e368eeff1780e6", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 experiments/ppp_ar/run_experiments.py:689"}, "properties": {"repobilityId": "eebf9d6a76a4aeb1", "scanner": "scanner-primary", "fingerprint": "c2e368eeff1780e6", "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": "1b61c8c29fb58498", "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": "047335f5750ab587", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-02525d39071dd2c7", "level": "note", "message": {"text": "Near-duplicate function bodies in 5 places"}, "properties": {"repobilityId": "2d0cb3ee7b4a8c07", "scanner": "scanner-primary", "fingerprint": "02525d39071dd2c7", "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": "ef14a79fdfa0a73d", "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": "fb42a8ae3c97abd3", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-02525d39071dd2c7", "level": "note", "message": {"text": "Near-duplicate function bodies in 5 places"}, "properties": {"repobilityId": "441e4920df805240", "scanner": "scanner-primary", "fingerprint": "02525d39071dd2c7", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-33a6b62e30ce7ab4", "level": "note", "message": {"text": "Near-duplicate function bodies in 6 places"}, "properties": {"repobilityId": "90df9e75d14d517d", "scanner": "scanner-primary", "fingerprint": "33a6b62e30ce7ab4", "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": "32fe275d16969355", "scanner": "scanner-primary", "fingerprint": "49c98f7cedd9c977", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-33a6b62e30ce7ab4", "level": "note", "message": {"text": "Near-duplicate function bodies in 6 places"}, "properties": {"repobilityId": "440920659dfa7d8c", "scanner": "scanner-primary", "fingerprint": "33a6b62e30ce7ab4", "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": "f46d47e38c7dc48c", "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": "4a12e21e1f54d7aa", "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": "afe7ed8b20b708a8", "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": "8f90c6c78d3bebc7", "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": "767eccf1b112a348", "scanner": "scanner-primary", "fingerprint": "49c98f7cedd9c977", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-0027e313ade46c8f", "level": "note", "message": {"text": "Near-duplicate function bodies in 7 places"}, "properties": {"repobilityId": "ab8660e369a9b2b1", "scanner": "scanner-primary", "fingerprint": "0027e313ade46c8f", "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": "9eee57f5f8a8e16f", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-76a2f6818267a9a8", "level": "note", "message": {"text": "Near-duplicate function bodies in 8 places"}, "properties": {"repobilityId": "c3957aa73fc717ba", "scanner": "scanner-primary", "fingerprint": "76a2f6818267a9a8", "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": "8e0cb9375c0f5c40", "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": "435a09751c7700a1", "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": "8940a91d5e464659", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}]}]}