{"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-b3cc41f6159ff762", "name": "Possibly dead Python function: post_fork", "shortDescription": {"text": "Possibly dead Python function: post_fork"}, "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-2db7cc8d45bc61d2", "name": "Possibly dead Python function: cleanup_temp_config_files", "shortDescription": {"text": "Possibly dead Python function: cleanup_temp_config_files"}, "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-a09b2e20df873236", "name": "Possibly dead Python function: topo_sort_all_tables", "shortDescription": {"text": "Possibly dead Python function: topo_sort_all_tables"}, "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-5fb718f752985cf5", "name": "Possibly dead Python function: before", "shortDescription": {"text": "Possibly dead Python function: before"}, "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-47d33f0987f4dcd0", "name": "Possibly dead Python function: after", "shortDescription": {"text": "Possibly dead Python function: after"}, "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-17ca42b562e18370", "name": "Possibly dead Python function: before", "shortDescription": {"text": "Possibly dead Python function: before"}, "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-2cc2f70842185e17", "name": "Possibly dead Python function: after", "shortDescription": {"text": "Possibly dead Python function: after"}, "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-63b162dde6ce0db9", "name": "Possibly dead Python function: before", "shortDescription": {"text": "Possibly dead Python function: before"}, "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-8e05c46fad80f8a6", "name": "Possibly dead Python function: after", "shortDescription": {"text": "Possibly dead Python function: after"}, "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-6f288f243aab09a3", "name": "Possibly dead Python function: normalize_gecos", "shortDescription": {"text": "Possibly dead Python function: normalize_gecos"}, "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-9a22a2afc91ddbf2", "name": "Possibly dead Python function: vendor_assets_context_processor", "shortDescription": {"text": "Possibly dead Python function: vendor_assets_context_processor"}, "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-76f5f813d3270a7d", "name": "Possibly dead Python function: require_permission_decorator", "shortDescription": {"text": "Possibly dead Python function: require_permission_decorator"}, "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-f6488ac586d4add7", "name": "Possibly dead Python function: decorator", "shortDescription": {"text": "Possibly dead Python function: decorator"}, "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-a12fedc97dbefc36", "name": "Possibly dead Python function: parse_input_start_date", "shortDescription": {"text": "Possibly dead Python function: parse_input_start_date"}, "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-13efe3cd69b92369", "name": "Possibly dead Python function: success_response", "shortDescription": {"text": "Possibly dead Python function: success_response"}, "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-08a8ab4eb210056d", "name": "Possibly dead Python function: error_response", "shortDescription": {"text": "Possibly dead Python function: error_response"}, "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-b108779bfd29b023", "name": "Possibly dead Python function: can_access_edit_project_page", "shortDescription": {"text": "Possibly dead Python function: can_access_edit_project_page"}, "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-37a64577e2dcc4f8", "name": "Possibly dead Python function: decorator", "shortDescription": {"text": "Possibly dead Python function: decorator"}, "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-d920a27ea1fdb43e", "name": "Possibly dead Python function: decorator", "shortDescription": {"text": "Possibly dead Python function: decorator"}, "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-91640078ed5b9a9a", "name": "Possibly dead Python function: require_any_permission", "shortDescription": {"text": "Possibly dead Python function: require_any_permission"}, "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-8bd4c1a019a29bb9", "name": "Possibly dead Python function: require_role", "shortDescription": {"text": "Possibly dead Python function: require_role"}, "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-3307163d3311b4e9", "name": "Possibly dead Python function: format_active_status", "shortDescription": {"text": "Possibly dead Python function: format_active_status"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-833c33f668905eb6", "name": "Possibly dead Python function: format_deleted_status", "shortDescription": {"text": "Possibly dead Python function: format_deleted_status"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-233736c9da501cab", "name": "Possibly dead Python function: inaccessible_callback", "shortDescription": {"text": "Possibly dead Python function: inaccessible_callback"}, "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-f781d91755f076b0", "name": "Privileged port 15 in use", "shortDescription": {"text": "Privileged port 15 in use"}, "fullDescription": {"text": "Port 15 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-5898462e20286936", "name": "Docker base image is tag-pinned but not digest-pinned: python:3", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: python:3"}, "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-849fabcca8e82523", "name": "Dockerfile runs as root: containers/collectors/Dockerfile", "shortDescription": {"text": "Dockerfile runs as root: containers/collectors/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-9d1486790b5cf572", "name": "Docker base image is tag-pinned but not digest-pinned: python:3", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: python:3"}, "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-e753b2384a1b8891", "name": "Dockerfile runs as root: containers/sam-sql-dev/Dockerfile", "shortDescription": {"text": "Dockerfile runs as root: containers/sam-sql-dev/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-210be37f3cda58bb", "name": "Docker base image is tag-pinned but not digest-pinned: mysql:9", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: mysql:9"}, "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-1f7f455e18c64181", "name": "Insecure pattern 'subprocess_shell_true' in containers/sam-sql-dev/bootstrap_clone.py:103", "shortDescription": {"text": "Insecure pattern 'subprocess_shell_true' in containers/sam-sql-dev/bootstrap_clone.py:103"}, "fullDescription": {"text": "Found a known-risky pattern (subprocess_shell_true). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-089f61d3cd453d62", "name": "Possible secret in infrastructure/README.md", "shortDescription": {"text": "Possible secret in infrastructure/README.md"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-4b10ed39986ea506", "name": "Insecure pattern 'debug_true' in src/webapp/run.py:420", "shortDescription": {"text": "Insecure pattern 'debug_true' in src/webapp/run.py:420"}, "fullDescription": {"text": "Found a known-risky pattern (debug_true). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "low", "confidence": 1.0}}, {"id": "scanner-015ba52786be2835", "name": "Insecure pattern 'direct_innerhtml_assignment' in src/webapp/static/js/fk-picker.js:74", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/webapp/static/js/fk-picker.js:74"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-fc385800828fa0a1", "name": "Insecure pattern 'direct_innerhtml_assignment' in src/webapp/static/js/htmx-config.js:208", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/webapp/static/js/htmx-config.js:208"}, "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-779907bdc406c87d", "name": "Insecure pattern 'direct_innerhtml_assignment' in src/webapp/static/js/form-helpers.js:25", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/webapp/static/js/form-helpers.js:25"}, "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-b0add02da2d0ebed", "name": "Insecure pattern 'subprocess_shell_true' in collectors/lib/pbs_client.py:45", "shortDescription": {"text": "Insecure pattern 'subprocess_shell_true' in collectors/lib/pbs_client.py:45"}, "fullDescription": {"text": "Found a known-risky pattern (subprocess_shell_true). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d4b4c81a02e69e48", "name": "Insecure pattern 'subprocess_shell_true' in collectors/lib/ssh_utils.py:121", "shortDescription": {"text": "Insecure pattern 'subprocess_shell_true' in collectors/lib/ssh_utils.py:121"}, "fullDescription": {"text": "Found a known-risky pattern (subprocess_shell_true). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b9eca59ddfe87d95", "name": "Insecure pattern 'subprocess_shell_true' in collectors/jupyterhub/collector.py:175", "shortDescription": {"text": "Insecure pattern 'subprocess_shell_true' in collectors/jupyterhub/collector.py:175"}, "fullDescription": {"text": "Found a known-risky pattern (subprocess_shell_true). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-363095a3361e16c5", "name": "Insecure pattern 'tls_verify_false' in collectors/jupyterhub/collector.py:289", "shortDescription": {"text": "Insecure pattern 'tls_verify_false' in collectors/jupyterhub/collector.py:289"}, "fullDescription": {"text": "Found a known-risky pattern (tls_verify_false). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3a0f005d561c7f7d", "name": "Possible secret in helm/local-secrets.sh", "shortDescription": {"text": "Possible secret in helm/local-secrets.sh"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-9566eff9976a8c63", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-502f45bda24a7f9b", "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-974777140cdaabca", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9aa6f2d1d3241378", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b3653d0dd467b7e5", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-bf2d5955152e4d2b", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-14f30e53ad98e8ef", "name": "GitHub Action tracks a moving branch", "shortDescription": {"text": "GitHub Action tracks a moving branch"}, "fullDescription": {"text": "trufflesecurity/trufflehog@main 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": "high", "confidence": 1.0}}, {"id": "scanner-8639da87c00a4ee1", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-29979c788e342b84", "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-26c7d05b6ec45893", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-848d817435f8b491", "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-8ee4e392dae61cf4", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b9d6befd0a1f265c", "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-17f76c5a9f230937", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-94906727b3a3b5c1", "name": "GitHub Action tracks a moving branch", "shortDescription": {"text": "GitHub Action tracks a moving branch"}, "fullDescription": {"text": "trufflesecurity/trufflehog@main 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": "high", "confidence": 1.0}}, {"id": "scanner-db57df79aef9e04a", "name": "Very large file: tests/unit/test_reconcile_quotas.py (1326 lines)", "shortDescription": {"text": "Very large file: tests/unit/test_reconcile_quotas.py (1326 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-f643f10c224a53d1", "name": "Very large file: tests/unit/test_allocations_performance.py (1283 lines)", "shortDescription": {"text": "Very large file: tests/unit/test_allocations_performance.py (1283 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-c8a953c85f2e5ab6", "name": "Very large file: tests/unit/test_query_functions.py (1675 lines)", "shortDescription": {"text": "Very large file: tests/unit/test_query_functions.py (1675 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-4ed3ae9f767e78cc", "name": "Very large file: src/webapp/dashboards/admin/projects_routes.py (2475 lines)", "shortDescription": {"text": "Very large file: src/webapp/dashboards/admin/projects_routes.py (2475 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-f4748daa28464946", "name": "Very large file: src/webapp/dashboards/user/blueprint.py (1425 lines)", "shortDescription": {"text": "Very large file: src/webapp/dashboards/user/blueprint.py (1425 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-9c9a90e84a481539", "name": "Very large file: src/sam/queries/allocations.py (1219 lines)", "shortDescription": {"text": "Very large file: src/sam/queries/allocations.py (1219 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-d0fb610d1ea2e38c", "name": "Very large file: src/sam/projects/projects.py (1566 lines)", "shortDescription": {"text": "Very large file: src/sam/projects/projects.py (1566 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-67b288d9ad9542e1", "name": "Very large file: src/cli/accounting/commands.py (2009 lines)", "shortDescription": {"text": "Very large file: src/cli/accounting/commands.py (2009 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 700 console/debugger/print-style debug statements in non-test source. This is a common fast-generation residue before production cleanup."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-72b2a6250083a784", "name": "Placeholder or mock-heavy implementation detected", "shortDescription": {"text": "Placeholder or mock-heavy implementation detected"}, "fullDescription": {"text": "Found 66 placeholder/mock markers across 17 source files. This often means the repo looks complete while core flows still use generated scaffolding or fake data."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2d0c7b7ab8f8aacf", "name": "Critical user flow still appears backed by mock or placeholder data", "shortDescription": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "fullDescription": {"text": "A payment/auth/admin/order/billing-style flow contains mock, fake, TODO, dummy, or placeholder markers in runtime source. In the Fable corpus this is a high-leverage completeness smell: the app can look finished while the money, identity, or tenant flow is still scaffolded."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-17d866d91a7c451e", "name": "Agent instruction/config may expose a secret: CLAUDE.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: CLAUDE.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-bea357a6497a2d5d", "name": "Agent authority lacks a verifier contract: CLAUDE.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: CLAUDE.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-bf837811743eb0b8", "name": "Agent authority lacks a verifier contract: docs/presentations/CLAUDE.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: docs/presentations/CLAUDE.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-1bea0f30aef0a8d0", "name": "Commented-code block (7 lines) in containers/sam-sql-dev/bootstrap_clone.py:252", "shortDescription": {"text": "Commented-code block (7 lines) in containers/sam-sql-dev/bootstrap_clone.py:252"}, "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-3c663ddd22ae52a7", "name": "Network/subprocess call without timeout or try/except \u2014 containers/sam-sql-dev/bootstrap_clone.py:106", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 containers/sam-sql-dev/bootstrap_clone.py:106"}, "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-fd542802f380c502", "name": "Commented-code block (5 lines) in tests/conftest.py:23", "shortDescription": {"text": "Commented-code block (5 lines) in tests/conftest.py:23"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c1444873931c9b11", "name": "Commented-code block (6 lines) in tests/factories/core.py:10", "shortDescription": {"text": "Commented-code block (6 lines) in tests/factories/core.py:10"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5c0ecd16047e705a", "name": "Commented-code block (7 lines) in tests/api/test_schemas.py:31", "shortDescription": {"text": "Commented-code block (7 lines) in tests/api/test_schemas.py:31"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-865b09ab9ca38e36", "name": "Commented-code block (7 lines) in tests/api/test_charge_endpoints.py:166", "shortDescription": {"text": "Commented-code block (7 lines) in tests/api/test_charge_endpoints.py:166"}, "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-7cee18af8dfa95df", "name": "Commented-code block (6 lines) in tests/unit/test_rate_limiter.py:173", "shortDescription": {"text": "Commented-code block (6 lines) in tests/unit/test_rate_limiter.py:173"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-54a3a6d1d100c74a", "name": "Commented-code block (5 lines) in tests/unit/test_webapp_jobs.py:1115", "shortDescription": {"text": "Commented-code block (5 lines) in tests/unit/test_webapp_jobs.py:1115"}, "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-f5a0364528892bd5", "name": "Commented-code block (5 lines) in tests/unit/test_smoke.py:53", "shortDescription": {"text": "Commented-code block (5 lines) in tests/unit/test_smoke.py:53"}, "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-0e6782a34f23f7ef", "name": "Commented-code block (5 lines) in tests/unit/test_user_proj_usage.py:301", "shortDescription": {"text": "Commented-code block (5 lines) in tests/unit/test_user_proj_usage.py:301"}, "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-7d9891f52e9e327a", "name": "Legacy-named symbol `expected_legacy` in tests/unit/test_accounting_models.py:66", "shortDescription": {"text": "Legacy-named symbol `expected_legacy` in tests/unit/test_accounting_models.py:66"}, "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-9245fabe820461b2", "name": "Commented-code block (7 lines) in tests/unit/test_reconcile_quotas.py:892", "shortDescription": {"text": "Commented-code block (7 lines) in tests/unit/test_reconcile_quotas.py:892"}, "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-62e1e3b693535b27", "name": "Commented-code block (5 lines) in tests/unit/test_sam_search_cli_allocations.py:32", "shortDescription": {"text": "Commented-code block (5 lines) in tests/unit/test_sam_search_cli_allocations.py:32"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7c9593810d6752d1", "name": "Legacy-named symbol `intended_old` in tests/unit/test_remediation_audit_trail.py:56", "shortDescription": {"text": "Legacy-named symbol `intended_old` in tests/unit/test_remediation_audit_trail.py:56"}, "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-c0507b5efacb1296", "name": "Commented-code block (5 lines) in tests/unit/test_rbac.py:63", "shortDescription": {"text": "Commented-code block (5 lines) in tests/unit/test_rbac.py:63"}, "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-25ba1c2092552c0a", "name": "Legacy-named symbol `test_replace_true_logs_delete_transaction_on_old` in tests/unit/test_renew_extend.py:877", "shortDescription": {"text": "Legacy-named symbol `test_replace_true_logs_delete_transaction_on_old` in tests/unit/test_renew_extend.py:877"}, "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-e6fee9a4818af24b", "name": "Commented-code block (7 lines) in tests/unit/test_renew_extend.py:325", "shortDescription": {"text": "Commented-code block (7 lines) in tests/unit/test_renew_extend.py:325"}, "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-e56699c876f17220", "name": "Legacy-named symbol `user_old` in tests/unit/test_current_disk_usage.py:225", "shortDescription": {"text": "Legacy-named symbol `user_old` in tests/unit/test_current_disk_usage.py:225"}, "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-7ea3d13e251ea8ab", "name": "Commented-code block (5 lines) in tests/unit/test_manage_summaries.py:116", "shortDescription": {"text": "Commented-code block (5 lines) in tests/unit/test_manage_summaries.py:116"}, "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-dac21d76c255c159", "name": "Commented-code block (5 lines) in tests/integration/test_schema_validation.py:74", "shortDescription": {"text": "Commented-code block (5 lines) in tests/integration/test_schema_validation.py:74"}, "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-5beea9697ac67d0b", "name": "Commented-code block (5 lines) in scripts/validate_user_proj_usage.py:485", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/validate_user_proj_usage.py:485"}, "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-3486ddd75bbd4a9d", "name": "Legacy-named symbol `intended_old` in utils/remediation/fix_cesm0002_audit_trail.py:132", "shortDescription": {"text": "Legacy-named symbol `intended_old` in utils/remediation/fix_cesm0002_audit_trail.py:132"}, "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-054792f5f5e23ce1", "name": "Commented-code block (6 lines) in utils/remediation/fix_cesm0002_audit_trail.py:457", "shortDescription": {"text": "Commented-code block (6 lines) in utils/remediation/fix_cesm0002_audit_trail.py:457"}, "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-bc7ac1238ea11cf3", "name": "Commented-code block (8 lines) in src/webapp/config.py:63", "shortDescription": {"text": "Commented-code block (8 lines) in src/webapp/config.py:63"}, "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-6223d2d83c7e1a21", "name": "Commented-code block (6 lines) in src/webapp/run.py:55", "shortDescription": {"text": "Commented-code block (6 lines) in src/webapp/run.py:55"}, "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-92c31117770a22de", "name": "Commented-code block (6 lines) in src/webapp/static/js/fk-picker.js:13", "shortDescription": {"text": "Commented-code block (6 lines) in src/webapp/static/js/fk-picker.js:13"}, "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-fe5eb944a3396acb", "name": "Commented-code block (5 lines) in src/webapp/static/js/htmx-config.js:31", "shortDescription": {"text": "Commented-code block (5 lines) in src/webapp/static/js/htmx-config.js:31"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-411b2b9beb8323f2", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/webapp/static/js/lazy-loading.js:14", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/webapp/static/js/lazy-loading.js:14"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6d6c0fb6aa6a79ab", "name": "Commented-code block (7 lines) in src/webapp/static/js/sortable_table.js:77", "shortDescription": {"text": "Commented-code block (7 lines) in src/webapp/static/js/sortable_table.js:77"}, "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-b640272535f033f9", "name": "Commented-code block (7 lines) in src/webapp/static/js/svg-chart-links.js:46", "shortDescription": {"text": "Commented-code block (7 lines) in src/webapp/static/js/svg-chart-links.js:46"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f8ad34f2cc5deb12", "name": "Commented-code block (6 lines) in src/webapp/static/js/nav-view-persistence.js:83", "shortDescription": {"text": "Commented-code block (6 lines) in src/webapp/static/js/nav-view-persistence.js:83"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-39d717dd643e6c9e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/webapp/static/js/nav-view-persistence.js:84", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/webapp/static/js/nav-view-persistence.js:84"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-1bb2594abd62de2e", "name": "Commented-code block (5 lines) in src/webapp/api/v1/projects.py:136", "shortDescription": {"text": "Commented-code block (5 lines) in src/webapp/api/v1/projects.py:136"}, "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-6ecc43f07dc0db4f", "name": "Commented-code block (5 lines) in src/webapp/jobs/routes.py:56", "shortDescription": {"text": "Commented-code block (5 lines) in src/webapp/jobs/routes.py:56"}, "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-34c99528ac338abc", "name": "Commented-code block (10 lines) in src/webapp/jobs/session.py:85", "shortDescription": {"text": "Commented-code block (10 lines) in src/webapp/jobs/session.py:85"}, "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-e5f02787d5ff9062", "name": "Commented-code block (5 lines) in src/webapp/utils/config_inspect.py:204", "shortDescription": {"text": "Commented-code block (5 lines) in src/webapp/utils/config_inspect.py:204"}, "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-62650843b10eab82", "name": "Commented-code block (7 lines) in src/webapp/utils/rbac.py:105", "shortDescription": {"text": "Commented-code block (7 lines) in src/webapp/utils/rbac.py:105"}, "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-162a6e904338b38d", "name": "Commented-code block (6 lines) in src/webapp/caching/__init__.py:79", "shortDescription": {"text": "Commented-code block (6 lines) in src/webapp/caching/__init__.py:79"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5191f2f94eca81f9", "name": "Commented-code block (7 lines) in src/webapp/limiter/__init__.py:112", "shortDescription": {"text": "Commented-code block (7 lines) in src/webapp/limiter/__init__.py:112"}, "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-9f6eb5fbbef143aa", "name": "Commented-code block (7 lines) in src/webapp/dashboards/charts.py:115", "shortDescription": {"text": "Commented-code block (7 lines) in src/webapp/dashboards/charts.py:115"}, "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-18aca8c189999475", "name": "Commented-code block (5 lines) in src/webapp/dashboards/admin/projects_routes.py:619", "shortDescription": {"text": "Commented-code block (5 lines) in src/webapp/dashboards/admin/projects_routes.py:619"}, "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-0a3ed1c7dd5db361", "name": "Commented-code block (5 lines) in src/webapp/dashboards/user/blueprint.py:464", "shortDescription": {"text": "Commented-code block (5 lines) in src/webapp/dashboards/user/blueprint.py:464"}, "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-835b614d7c324034", "name": "Commented-code block (8 lines) in src/webapp/dashboards/allocations/blueprint.py:272", "shortDescription": {"text": "Commented-code block (8 lines) in src/webapp/dashboards/allocations/blueprint.py:272"}, "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-7160f208378e0678", "name": "Commented-code block (5 lines) in src/webapp/dashboards/status/blueprint.py:85", "shortDescription": {"text": "Commented-code block (5 lines) in src/webapp/dashboards/status/blueprint.py:85"}, "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-c7fea0915f5eb00e", "name": "Commented-code block (6 lines) in src/sam/manage/renew.py:343", "shortDescription": {"text": "Commented-code block (6 lines) in src/sam/manage/renew.py:343"}, "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-0c497ff84430ba94", "name": "Legacy-named symbol `child_old` in src/sam/manage/allocations.py:377", "shortDescription": {"text": "Legacy-named symbol `child_old` in src/sam/manage/allocations.py:377"}, "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-a9d8e7f9568b999e", "name": "Commented-code block (6 lines) in src/sam/manage/allocations.py:150", "shortDescription": {"text": "Commented-code block (6 lines) in src/sam/manage/allocations.py:150"}, "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-1230f4c692088396", "name": "Commented-code block (5 lines) in src/sam/core/users.py:536", "shortDescription": {"text": "Commented-code block (5 lines) in src/sam/core/users.py:536"}, "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-a374cfc898df3a43", "name": "Commented-code block (5 lines) in src/sam/accounting/allocations.py:427", "shortDescription": {"text": "Commented-code block (5 lines) in src/sam/accounting/allocations.py:427"}, "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-10ce67a5564d0bdd", "name": "Commented-code block (7 lines) in src/sam/accounting/adjustments.py:7", "shortDescription": {"text": "Commented-code block (7 lines) in src/sam/accounting/adjustments.py:7"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-23c1620bd56f6b6c", "name": "Commented-code block (6 lines) in src/sam/summaries/comp_summaries.py:12", "shortDescription": {"text": "Commented-code block (6 lines) in src/sam/summaries/comp_summaries.py:12"}, "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-d1b896869bb0fcc1", "name": "Commented-code block (5 lines) in src/sam/queries/rolling_usage.py:318", "shortDescription": {"text": "Commented-code block (5 lines) in src/sam/queries/rolling_usage.py:318"}, "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-8ba09f4eb0d5ff52", "name": "Commented-code block (5 lines) in src/sam/queries/fstree_access.py:128", "shortDescription": {"text": "Commented-code block (5 lines) in src/sam/queries/fstree_access.py:128"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ba39ab900cc8de02", "name": "Commented-code block (6 lines) in src/sam/queries/dashboard.py:113", "shortDescription": {"text": "Commented-code block (6 lines) in src/sam/queries/dashboard.py:113"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a6caaa6de42352d1", "name": "Commented-code block (5 lines) in src/sam/queries/project_access.py:38", "shortDescription": {"text": "Commented-code block (5 lines) in src/sam/queries/project_access.py:38"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3841332d1600813d", "name": "Commented-code block (6 lines) in src/sam/queries/disk_usage.py:770", "shortDescription": {"text": "Commented-code block (6 lines) in src/sam/queries/disk_usage.py:770"}, "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-3eea7e4abefba80d", "name": "Commented-code block (6 lines) in src/sam/queries/allocations.py:682", "shortDescription": {"text": "Commented-code block (6 lines) in src/sam/queries/allocations.py:682"}, "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-4e701fb40223abbc", "name": "Commented-code block (12 lines) in src/sam/projects/projects.py:367", "shortDescription": {"text": "Commented-code block (12 lines) in src/sam/projects/projects.py:367"}, "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-d807dba956ce4013", "name": "Commented-code block (5 lines) in src/system_status/models/lookups.py:4", "shortDescription": {"text": "Commented-code block (5 lines) in src/system_status/models/lookups.py:4"}, "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-48edf9bfa9b4f89a", "name": "Commented-code block (5 lines) in src/system_status/models/user_proj_queues.py:49", "shortDescription": {"text": "Commented-code block (5 lines) in src/system_status/models/user_proj_queues.py:49"}, "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-a61af5632befcb23", "name": "Commented-code block (5 lines) in src/system_status/queries/user_proj_queue_ingest.py:85", "shortDescription": {"text": "Commented-code block (5 lines) in src/system_status/queries/user_proj_queue_ingest.py:85"}, "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-7acc4986c0d950d1", "name": "Commented-code block (5 lines) in src/system_status/queries/user_proj_usage.py:64", "shortDescription": {"text": "Commented-code block (5 lines) in src/system_status/queries/user_proj_usage.py:64"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5d543e5f9e48cc1e", "name": "Commented-code block (5 lines) in src/system_status/queries/lookups.py:107", "shortDescription": {"text": "Commented-code block (5 lines) in src/system_status/queries/lookups.py:107"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-96449501d6e85fc7", "name": "Commented-code block (5 lines) in src/system_status/queries/user_proj_queues.py:182", "shortDescription": {"text": "Commented-code block (5 lines) in src/system_status/queries/user_proj_queues.py:182"}, "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-670b2c62ec82484f", "name": "Commented-code block (6 lines) in src/cli/cmds/admin.py:305", "shortDescription": {"text": "Commented-code block (6 lines) in src/cli/cmds/admin.py:305"}, "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-6d3cba7a666f50a6", "name": "Commented-code block (6 lines) in src/cli/user/display.py:162", "shortDescription": {"text": "Commented-code block (6 lines) in src/cli/user/display.py:162"}, "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-f68d82dc0001dd0b", "name": "Commented-code block (8 lines) in src/cli/accounting/path_verifier.py:97", "shortDescription": {"text": "Commented-code block (8 lines) in src/cli/accounting/path_verifier.py:97"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-35ae3c8e9b82d12d", "name": "Legacy-named symbol `n_deleted_legacy` in src/cli/accounting/commands.py:751", "shortDescription": {"text": "Legacy-named symbol `n_deleted_legacy` in src/cli/accounting/commands.py:751"}, "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-e3fb4334c143ed67", "name": "Commented-code block (6 lines) in src/cli/accounting/commands.py:58", "shortDescription": {"text": "Commented-code block (6 lines) in src/cli/accounting/commands.py:58"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9b170c2928538e82", "name": "Commented-code block (5 lines) in src/cli/accounting/disk_usage/glade_csv.py:45", "shortDescription": {"text": "Commented-code block (5 lines) in src/cli/accounting/disk_usage/glade_csv.py:45"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f6754389fc2f4ed9", "name": "74 env vars used in code but missing from .env.example", "shortDescription": {"text": "74 env vars used in code but missing from .env.example"}, "fullDescription": {"text": "Drift between code and config docs. The first few: `ALEMBIC_SYSTEM_STATUS_URL`, `ALLOCATION_USAGE_CACHE_SIZE`, `ALLOCATION_USAGE_CACHE_TTL`, `API_TIMEOUT`, `AUDIT_ENABLED`, `AUDIT_LOG_PATH`, `AUTH_PROVIDER`, `BUILD_DATE` + 66 more. Add them (with a placeholder/comment) to .env.example so onboarding doesn't break."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2c04133e54348533", "name": "Near-duplicate function bodies in 2 places", "shortDescription": {"text": "Near-duplicate function bodies in 2 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\ncontainers/sam-sql-dev/bootstrap_clone.py:dump_table_full, containers/sam-sql-dev/bootstrap_clone.py:dump_table_where\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-be46ea126aa5d8dc", "name": "Near-duplicate function bodies in 3 places", "shortDescription": {"text": "Near-duplicate function bodies in 3 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\nutils/profiling/profile_admin_orgs.py:before, utils/profiling/profile_user_dashboard.py:before, utils/profiling/profile_allocations.py:before\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:\nsrc/webapp/api/access_control.py:decorator, src/webapp/api/access_control.py:decorator, src/webapp/api/access_control.py:decorator, src/webapp/api/access_control.py:decorator\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:\nsrc/webapp/api/access_control.py:decorated_function, src/webapp/api/access_control.py:decorated_function, src/webapp/api/access_control.py:decorated_function, src/webapp/api/access_control.py:decorated_function\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:\nsrc/webapp/utils/rbac.py:decorator, src/webapp/utils/rbac.py:decorator, src/webapp/utils/rbac.py:decorator, src/webapp/utils/rbac.py:decorator\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-9fd4817b13ae20ee", "name": "Flask mutation route `refresh_cache` without `@login_required` \u2014 src/webapp/api/v1/directory_access.py:82", "shortDescription": {"text": "Flask mutation route `refresh_cache` without `@login_required` \u2014 src/webapp/api/v1/directory_access.py:82"}, "fullDescription": {"text": "Flask route declares POST/PUT/DELETE/PATCH methods without an auth decorator. Add `@login_required` (Flask-Login) or equivalent."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8d36da2ec641d596", "name": "Flask mutation route `refresh_cache` without `@login_required` \u2014 src/webapp/api/v1/fstree_access.py:225", "shortDescription": {"text": "Flask mutation route `refresh_cache` without `@login_required` \u2014 src/webapp/api/v1/fstree_access.py:225"}, "fullDescription": {"text": "Flask route declares POST/PUT/DELETE/PATCH methods without an auth decorator. Add `@login_required` (Flask-Login) or equivalent."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-22f72f2730115730", "name": "Flask mutation route `refresh_cache` without `@login_required` \u2014 src/webapp/api/v1/project_access.py:89", "shortDescription": {"text": "Flask mutation route `refresh_cache` without `@login_required` \u2014 src/webapp/api/v1/project_access.py:89"}, "fullDescription": {"text": "Flask route declares POST/PUT/DELETE/PATCH methods without an auth decorator. Add `@login_required` (Flask-Login) or equivalent."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ff44c1aadc3596dd", "name": "Flask mutation route `ingest_derecho` without `@login_required` \u2014 src/webapp/api/v1/status.py:214", "shortDescription": {"text": "Flask mutation route `ingest_derecho` without `@login_required` \u2014 src/webapp/api/v1/status.py:214"}, "fullDescription": {"text": "Flask route declares POST/PUT/DELETE/PATCH methods without an auth decorator. Add `@login_required` (Flask-Login) or equivalent."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-929877828d2909bc", "name": "Flask mutation route `ingest_casper` without `@login_required` \u2014 src/webapp/api/v1/status.py:248", "shortDescription": {"text": "Flask mutation route `ingest_casper` without `@login_required` \u2014 src/webapp/api/v1/status.py:248"}, "fullDescription": {"text": "Flask route declares POST/PUT/DELETE/PATCH methods without an auth decorator. Add `@login_required` (Flask-Login) or equivalent."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-79f06cdca3a3b98a", "name": "Flask mutation route `ingest_jupyterhub` without `@login_required` \u2014 src/webapp/api/v1/status.py:283", "shortDescription": {"text": "Flask mutation route `ingest_jupyterhub` without `@login_required` \u2014 src/webapp/api/v1/status.py:283"}, "fullDescription": {"text": "Flask route declares POST/PUT/DELETE/PATCH methods without an auth decorator. Add `@login_required` (Flask-Login) or equivalent."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ceb8b27321c9e6bb", "name": "Flask mutation route `report_outage` without `@login_required` \u2014 src/webapp/api/v1/status.py:327", "shortDescription": {"text": "Flask mutation route `report_outage` without `@login_required` \u2014 src/webapp/api/v1/status.py:327"}, "fullDescription": {"text": "Flask route declares POST/PUT/DELETE/PATCH methods without an auth decorator. Add `@login_required` (Flask-Login) or equivalent."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-cccbdec5403c5deb", "name": "Flask mutation route `<anonymous>` without `@login_required` \u2014 src/webapp/auth/blueprint.py:53", "shortDescription": {"text": "Flask mutation route `<anonymous>` without `@login_required` \u2014 src/webapp/auth/blueprint.py:53"}, "fullDescription": {"text": "Flask route declares POST/PUT/DELETE/PATCH methods without an auth decorator. Add `@login_required` (Flask-Login) or equivalent."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}]}}, "automationDetails": {"id": "repobility/24545"}, "properties": {"repository": "benkirk/sam-queries", "repoUrl": "https://github.com/benkirk/sam-queries", "branch": "main"}, "results": [{"ruleId": "scanner-b3cc41f6159ff762", "level": "note", "message": {"text": "Possibly dead Python function: post_fork"}, "properties": {"repobilityId": "9a8de6da8a28d13c", "scanner": "scanner-primary", "fingerprint": "b3cc41f6159ff762", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "containers/webapp/gunicorn_config.py:27"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-2db7cc8d45bc61d2", "level": "note", "message": {"text": "Possibly dead Python function: cleanup_temp_config_files"}, "properties": {"repobilityId": "b9c47f67cefc7312", "scanner": "scanner-primary", "fingerprint": "2db7cc8d45bc61d2", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "containers/sam-sql-dev/bootstrap_clone.py:70"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a09b2e20df873236", "level": "note", "message": {"text": "Possibly dead Python function: topo_sort_all_tables"}, "properties": {"repobilityId": "a7ed1853e0c0d4a4", "scanner": "scanner-primary", "fingerprint": "a09b2e20df873236", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "containers/sam-sql-dev/bootstrap_clone.py:243"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-5fb718f752985cf5", "level": "note", "message": {"text": "Possibly dead Python function: before"}, "properties": {"repobilityId": "507bff852ad0b7e8", "scanner": "scanner-primary", "fingerprint": "5fb718f752985cf5", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "utils/profiling/profile_admin_orgs.py:58"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-47d33f0987f4dcd0", "level": "note", "message": {"text": "Possibly dead Python function: after"}, "properties": {"repobilityId": "7755e4fef7213307", "scanner": "scanner-primary", "fingerprint": "47d33f0987f4dcd0", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "utils/profiling/profile_admin_orgs.py:61"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-17ca42b562e18370", "level": "note", "message": {"text": "Possibly dead Python function: before"}, "properties": {"repobilityId": "507bff852ad0b7e8", "scanner": "scanner-primary", "fingerprint": "17ca42b562e18370", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "utils/profiling/profile_user_dashboard.py:85"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-2cc2f70842185e17", "level": "note", "message": {"text": "Possibly dead Python function: after"}, "properties": {"repobilityId": "7755e4fef7213307", "scanner": "scanner-primary", "fingerprint": "2cc2f70842185e17", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "utils/profiling/profile_user_dashboard.py:88"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-63b162dde6ce0db9", "level": "note", "message": {"text": "Possibly dead Python function: before"}, "properties": {"repobilityId": "507bff852ad0b7e8", "scanner": "scanner-primary", "fingerprint": "63b162dde6ce0db9", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "utils/profiling/profile_allocations.py:97"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-8e05c46fad80f8a6", "level": "note", "message": {"text": "Possibly dead Python function: after"}, "properties": {"repobilityId": "7755e4fef7213307", "scanner": "scanner-primary", "fingerprint": "8e05c46fad80f8a6", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "utils/profiling/profile_allocations.py:100"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-6f288f243aab09a3", "level": "note", "message": {"text": "Possibly dead Python function: normalize_gecos"}, "properties": {"repobilityId": "f59d9b5bc1ea4942", "scanner": "scanner-primary", "fingerprint": "6f288f243aab09a3", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "utils/parity/helpers.py:27"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-9a22a2afc91ddbf2", "level": "note", "message": {"text": "Possibly dead Python function: vendor_assets_context_processor"}, "properties": {"repobilityId": "a859f411796602f2", "scanner": "scanner-primary", "fingerprint": "9a22a2afc91ddbf2", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/webapp/vendor_assets.py:81"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-76f5f813d3270a7d", "level": "note", "message": {"text": "Possibly dead Python function: require_permission_decorator"}, "properties": {"repobilityId": "73c167459a99d3ba", "scanner": "scanner-primary", "fingerprint": "76f5f813d3270a7d", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/webapp/api/access_control.py:88"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f6488ac586d4add7", "level": "note", "message": {"text": "Possibly dead Python function: decorator"}, "properties": {"repobilityId": "ffbcbc9bc189af1c", "scanner": "scanner-primary", "fingerprint": "f6488ac586d4add7", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/webapp/api/access_control.py:398"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a12fedc97dbefc36", "level": "note", "message": {"text": "Possibly dead Python function: parse_input_start_date"}, "properties": {"repobilityId": "746d79345489eaf7", "scanner": "scanner-primary", "fingerprint": "a12fedc97dbefc36", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/webapp/api/helpers.py:45"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-13efe3cd69b92369", "level": "note", "message": {"text": "Possibly dead Python function: success_response"}, "properties": {"repobilityId": "7d2be7977548bde8", "scanner": "scanner-primary", "fingerprint": "13efe3cd69b92369", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/webapp/api/helpers.py:197"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-08a8ab4eb210056d", "level": "note", "message": {"text": "Possibly dead Python function: error_response"}, "properties": {"repobilityId": "bbaaadfc9f5dc45e", "scanner": "scanner-primary", "fingerprint": "08a8ab4eb210056d", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/webapp/api/helpers.py:218"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-b108779bfd29b023", "level": "note", "message": {"text": "Possibly dead Python function: can_access_edit_project_page"}, "properties": {"repobilityId": "365a7d7138ad2088", "scanner": "scanner-primary", "fingerprint": "b108779bfd29b023", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/webapp/utils/project_permissions.py:78"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-37a64577e2dcc4f8", "level": "note", "message": {"text": "Possibly dead Python function: decorator"}, "properties": {"repobilityId": "ffbcbc9bc189af1c", "scanner": "scanner-primary", "fingerprint": "37a64577e2dcc4f8", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/webapp/utils/api_auth.py:131"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d920a27ea1fdb43e", "level": "note", "message": {"text": "Possibly dead Python function: decorator"}, "properties": {"repobilityId": "ffbcbc9bc189af1c", "scanner": "scanner-primary", "fingerprint": "d920a27ea1fdb43e", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/webapp/utils/rbac.py:596"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-91640078ed5b9a9a", "level": "note", "message": {"text": "Possibly dead Python function: require_any_permission"}, "properties": {"repobilityId": "911c89abdf9176df", "scanner": "scanner-primary", "fingerprint": "91640078ed5b9a9a", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/webapp/utils/rbac.py:562"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-8bd4c1a019a29bb9", "level": "note", "message": {"text": "Possibly dead Python function: require_role"}, "properties": {"repobilityId": "ebb52713535182e2", "scanner": "scanner-primary", "fingerprint": "8bd4c1a019a29bb9", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/webapp/utils/rbac.py:585"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3307163d3311b4e9", "level": "note", "message": {"text": "Possibly dead Python function: format_active_status"}, "properties": {"repobilityId": "4b77757e843d35ef", "scanner": "scanner-primary", "fingerprint": "3307163d3311b4e9", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/webapp/admin/custom_model_views.py:16"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-833c33f668905eb6", "level": "note", "message": {"text": "Possibly dead Python function: format_deleted_status"}, "properties": {"repobilityId": "2e29829cee5292f6", "scanner": "scanner-primary", "fingerprint": "833c33f668905eb6", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/webapp/admin/custom_model_views.py:22"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-233736c9da501cab", "level": "note", "message": {"text": "Possibly dead Python function: inaccessible_callback"}, "properties": {"repobilityId": "4e638151cde52b04", "scanner": "scanner-primary", "fingerprint": "233736c9da501cab", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/webapp/admin/default_model_views.py:80"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f781d91755f076b0", "level": "warning", "message": {"text": "Privileged port 15 in use"}, "properties": {"repobilityId": "3340f9a170f285cd", "scanner": "scanner-primary", "fingerprint": "f781d91755f076b0", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/clean-ghcr.yaml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-5898462e20286936", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: python:3"}, "properties": {"repobilityId": "9a03e59ccd022e50", "scanner": "scanner-primary", "fingerprint": "5898462e20286936", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "containers/webapp/Dockerfile"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-849fabcca8e82523", "level": "warning", "message": {"text": "Dockerfile runs as root: containers/collectors/Dockerfile"}, "properties": {"repobilityId": "31d8580fd2d794d6", "scanner": "scanner-primary", "fingerprint": "849fabcca8e82523", "layer": "hardware", "severity": "medium", "confidence": 1.0, "tags": ["security", "container"]}}, {"ruleId": "scanner-9d1486790b5cf572", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: python:3"}, "properties": {"repobilityId": "89137f9c7755eaf8", "scanner": "scanner-primary", "fingerprint": "9d1486790b5cf572", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "containers/collectors/Dockerfile"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e753b2384a1b8891", "level": "warning", "message": {"text": "Dockerfile runs as root: containers/sam-sql-dev/Dockerfile"}, "properties": {"repobilityId": "a4818cae23e41111", "scanner": "scanner-primary", "fingerprint": "e753b2384a1b8891", "layer": "hardware", "severity": "medium", "confidence": 1.0, "tags": ["security", "container"]}}, {"ruleId": "scanner-210be37f3cda58bb", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: mysql:9"}, "properties": {"repobilityId": "c41df98afb16c847", "scanner": "scanner-primary", "fingerprint": "210be37f3cda58bb", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "containers/sam-sql-dev/Dockerfile"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-1f7f455e18c64181", "level": "error", "message": {"text": "Insecure pattern 'subprocess_shell_true' in containers/sam-sql-dev/bootstrap_clone.py:103"}, "properties": {"repobilityId": "4bcd33245de4a741", "scanner": "scanner-primary", "fingerprint": "1f7f455e18c64181", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "subprocess_shell_true"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "containers/sam-sql-dev/bootstrap_clone.py"}, "region": {"startLine": 103}}}]}, {"ruleId": "scanner-089f61d3cd453d62", "level": "error", "message": {"text": "Possible secret in infrastructure/README.md"}, "properties": {"repobilityId": "d3a7ec0297c2bfed", "scanner": "scanner-primary", "fingerprint": "089f61d3cd453d62", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "infrastructure/README.md"}, "region": {"startLine": 60}}}]}, {"ruleId": "scanner-4b10ed39986ea506", "level": "note", "message": {"text": "Insecure pattern 'debug_true' in src/webapp/run.py:420"}, "properties": {"repobilityId": "bb7e9ec92d2f5130", "scanner": "scanner-primary", "fingerprint": "4b10ed39986ea506", "layer": "security", "severity": "low", "confidence": 1.0, "tags": ["owasp", "debug_true"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/webapp/run.py"}, "region": {"startLine": 420}}}]}, {"ruleId": "scanner-015ba52786be2835", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/webapp/static/js/fk-picker.js:74"}, "properties": {"repobilityId": "7336fa410f6247a6", "scanner": "scanner-primary", "fingerprint": "015ba52786be2835", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/webapp/static/js/fk-picker.js"}, "region": {"startLine": 74}}}]}, {"ruleId": "scanner-fc385800828fa0a1", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/webapp/static/js/htmx-config.js:208"}, "properties": {"repobilityId": "41997ba18fd8b2eb", "scanner": "scanner-primary", "fingerprint": "fc385800828fa0a1", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/webapp/static/js/htmx-config.js"}, "region": {"startLine": 208}}}]}, {"ruleId": "scanner-779907bdc406c87d", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/webapp/static/js/form-helpers.js:25"}, "properties": {"repobilityId": "75881c3eae8a5d6c", "scanner": "scanner-primary", "fingerprint": "779907bdc406c87d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/webapp/static/js/form-helpers.js"}, "region": {"startLine": 25}}}]}, {"ruleId": "scanner-b0add02da2d0ebed", "level": "error", "message": {"text": "Insecure pattern 'subprocess_shell_true' in collectors/lib/pbs_client.py:45"}, "properties": {"repobilityId": "cb7e9d72369d873f", "scanner": "scanner-primary", "fingerprint": "b0add02da2d0ebed", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "subprocess_shell_true"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "collectors/lib/pbs_client.py"}, "region": {"startLine": 45}}}]}, {"ruleId": "scanner-d4b4c81a02e69e48", "level": "error", "message": {"text": "Insecure pattern 'subprocess_shell_true' in collectors/lib/ssh_utils.py:121"}, "properties": {"repobilityId": "c8101b824f087e86", "scanner": "scanner-primary", "fingerprint": "d4b4c81a02e69e48", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "subprocess_shell_true"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "collectors/lib/ssh_utils.py"}, "region": {"startLine": 121}}}]}, {"ruleId": "scanner-b9eca59ddfe87d95", "level": "error", "message": {"text": "Insecure pattern 'subprocess_shell_true' in collectors/jupyterhub/collector.py:175"}, "properties": {"repobilityId": "f1b9e6179b1f5629", "scanner": "scanner-primary", "fingerprint": "b9eca59ddfe87d95", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "subprocess_shell_true"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "collectors/jupyterhub/collector.py"}, "region": {"startLine": 175}}}]}, {"ruleId": "scanner-363095a3361e16c5", "level": "error", "message": {"text": "Insecure pattern 'tls_verify_false' in collectors/jupyterhub/collector.py:289"}, "properties": {"repobilityId": "8dc47b992823fc3e", "scanner": "scanner-primary", "fingerprint": "363095a3361e16c5", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "tls_verify_false"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "collectors/jupyterhub/collector.py"}, "region": {"startLine": 289}}}]}, {"ruleId": "scanner-3a0f005d561c7f7d", "level": "error", "message": {"text": "Possible secret in helm/local-secrets.sh"}, "properties": {"repobilityId": "1cc3b8addf6c54be", "scanner": "scanner-primary", "fingerprint": "3a0f005d561c7f7d", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "helm/local-secrets.sh"}, "region": {"startLine": 26}}}]}, {"ruleId": "scanner-3a0f005d561c7f7d", "level": "error", "message": {"text": "Possible secret in helm/local-secrets.sh"}, "properties": {"repobilityId": "1cc3b8addf6c54be", "scanner": "scanner-primary", "fingerprint": "3a0f005d561c7f7d", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "helm/local-secrets.sh"}, "region": {"startLine": 33}}}]}, {"ruleId": "scanner-9566eff9976a8c63", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "081ff9557918f41a", "scanner": "scanner-primary", "fingerprint": "9566eff9976a8c63", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/build-images-cirrus-deploy.yaml"}, "region": {"startLine": 135}}}]}, {"ruleId": "scanner-9566eff9976a8c63", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "a5f3c56a13377ebe", "scanner": "scanner-primary", "fingerprint": "9566eff9976a8c63", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/build-images-cirrus-deploy.yaml"}, "region": {"startLine": 138}}}]}, {"ruleId": "scanner-9566eff9976a8c63", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "9ece1da13539bb66", "scanner": "scanner-primary", "fingerprint": "9566eff9976a8c63", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/build-images-cirrus-deploy.yaml"}, "region": {"startLine": 141}}}]}, {"ruleId": "scanner-9566eff9976a8c63", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "c9e2912815078a04", "scanner": "scanner-primary", "fingerprint": "9566eff9976a8c63", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/build-images-cirrus-deploy.yaml"}, "region": {"startLine": 144}}}]}, {"ruleId": "scanner-9566eff9976a8c63", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "ff90238106109621", "scanner": "scanner-primary", "fingerprint": "9566eff9976a8c63", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/build-images-cirrus-deploy.yaml"}, "region": {"startLine": 152}}}]}, {"ruleId": "scanner-9566eff9976a8c63", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "932ebb4db05fd52c", "scanner": "scanner-primary", "fingerprint": "9566eff9976a8c63", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/build-images-cirrus-deploy.yaml"}, "region": {"startLine": 175}}}]}, {"ruleId": "scanner-9566eff9976a8c63", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "869b9acc0cdf5902", "scanner": "scanner-primary", "fingerprint": "9566eff9976a8c63", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/build-images-cirrus-deploy.yaml"}, "region": {"startLine": 230}}}]}, {"ruleId": "scanner-9566eff9976a8c63", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "081ff9557918f41a", "scanner": "scanner-primary", "fingerprint": "9566eff9976a8c63", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/build-images-cirrus-deploy.yaml"}, "region": {"startLine": 248}}}]}, {"ruleId": "scanner-9566eff9976a8c63", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "23d573d32f8e0018", "scanner": "scanner-primary", "fingerprint": "9566eff9976a8c63", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/build-images-cirrus-deploy.yaml"}, "region": {"startLine": 253}}}]}, {"ruleId": "scanner-9566eff9976a8c63", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "3dc5b55ed80c02d4", "scanner": "scanner-primary", "fingerprint": "9566eff9976a8c63", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/build-images-cirrus-deploy.yaml"}, "region": {"startLine": 287}}}]}, {"ruleId": "scanner-9566eff9976a8c63", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "081ff9557918f41a", "scanner": "scanner-primary", "fingerprint": "9566eff9976a8c63", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/build-images-cirrus-deploy.yaml"}, "region": {"startLine": 293}}}]}, {"ruleId": "scanner-502f45bda24a7f9b", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "15b472d41e5394aa", "scanner": "scanner-primary", "fingerprint": "502f45bda24a7f9b", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/build-images-cirrus-deploy.yaml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-974777140cdaabca", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "0475fd40c9faed8d", "scanner": "scanner-primary", "fingerprint": "974777140cdaabca", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/sam-ci-docker.yaml"}, "region": {"startLine": 36}}}]}, {"ruleId": "scanner-974777140cdaabca", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "65ead9e389bc4eee", "scanner": "scanner-primary", "fingerprint": "974777140cdaabca", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/sam-ci-docker.yaml"}, "region": {"startLine": 43}}}]}, {"ruleId": "scanner-974777140cdaabca", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "fd856f5c7fce819b", "scanner": "scanner-primary", "fingerprint": "974777140cdaabca", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/sam-ci-docker.yaml"}, "region": {"startLine": 165}}}]}, {"ruleId": "scanner-9aa6f2d1d3241378", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "edee8b2f692e0e1b", "scanner": "scanner-primary", "fingerprint": "9aa6f2d1d3241378", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/sam-ci-conda_make.yaml"}, "region": {"startLine": 53}}}]}, {"ruleId": "scanner-9aa6f2d1d3241378", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "de95643d22317a47", "scanner": "scanner-primary", "fingerprint": "9aa6f2d1d3241378", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/sam-ci-conda_make.yaml"}, "region": {"startLine": 71}}}]}, {"ruleId": "scanner-b3653d0dd467b7e5", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "54232fcb1679b2ae", "scanner": "scanner-primary", "fingerprint": "b3653d0dd467b7e5", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/test-install.yaml"}, "region": {"startLine": 33}}}]}, {"ruleId": "scanner-b3653d0dd467b7e5", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "e52dddb64af0a8ae", "scanner": "scanner-primary", "fingerprint": "b3653d0dd467b7e5", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/test-install.yaml"}, "region": {"startLine": 39}}}]}, {"ruleId": "scanner-bf2d5955152e4d2b", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "3a605094b9eb6a5b", "scanner": "scanner-primary", "fingerprint": "bf2d5955152e4d2b", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/deploy-staging.yaml"}, "region": {"startLine": 25}}}]}, {"ruleId": "scanner-bf2d5955152e4d2b", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "c4860e0d3892fdf3", "scanner": "scanner-primary", "fingerprint": "bf2d5955152e4d2b", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/deploy-staging.yaml"}, "region": {"startLine": 30}}}]}, {"ruleId": "scanner-14f30e53ad98e8ef", "level": "error", "message": {"text": "GitHub Action tracks a moving branch"}, "properties": {"repobilityId": "644aed7860e11f89", "scanner": "scanner-primary", "fingerprint": "14f30e53ad98e8ef", "layer": "cicd", "severity": "high", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/deploy-staging.yaml"}, "region": {"startLine": 38}}}]}, {"ruleId": "scanner-bf2d5955152e4d2b", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "3a605094b9eb6a5b", "scanner": "scanner-primary", "fingerprint": "bf2d5955152e4d2b", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/deploy-staging.yaml"}, "region": {"startLine": 49}}}]}, {"ruleId": "scanner-bf2d5955152e4d2b", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "bd87906ecb264978", "scanner": "scanner-primary", "fingerprint": "bf2d5955152e4d2b", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/deploy-staging.yaml"}, "region": {"startLine": 54}}}]}, {"ruleId": "scanner-bf2d5955152e4d2b", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "5934b74f4c3636c2", "scanner": "scanner-primary", "fingerprint": "bf2d5955152e4d2b", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/deploy-staging.yaml"}, "region": {"startLine": 62}}}]}, {"ruleId": "scanner-bf2d5955152e4d2b", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "7a5378d384f5be9b", "scanner": "scanner-primary", "fingerprint": "bf2d5955152e4d2b", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/deploy-staging.yaml"}, "region": {"startLine": 93}}}]}, {"ruleId": "scanner-bf2d5955152e4d2b", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "ad40e56fbe4b4856", "scanner": "scanner-primary", "fingerprint": "bf2d5955152e4d2b", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/deploy-staging.yaml"}, "region": {"startLine": 100}}}]}, {"ruleId": "scanner-8639da87c00a4ee1", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "47e6f29c59ee6c3d", "scanner": "scanner-primary", "fingerprint": "8639da87c00a4ee1", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/sync-staging-to-main.yaml"}, "region": {"startLine": 35}}}]}, {"ruleId": "scanner-29979c788e342b84", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "53aa43d4be8e35c0", "scanner": "scanner-primary", "fingerprint": "29979c788e342b84", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/sync-staging-to-main.yaml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-26c7d05b6ec45893", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "67a7646d395f7209", "scanner": "scanner-primary", "fingerprint": "26c7d05b6ec45893", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/mega-linter.yaml"}, "region": {"startLine": 61}}}]}, {"ruleId": "scanner-26c7d05b6ec45893", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "920754b84e70c3b0", "scanner": "scanner-primary", "fingerprint": "26c7d05b6ec45893", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/mega-linter.yaml"}, "region": {"startLine": 74}}}]}, {"ruleId": "scanner-26c7d05b6ec45893", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "efa828f20aa1fdf1", "scanner": "scanner-primary", "fingerprint": "26c7d05b6ec45893", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/mega-linter.yaml"}, "region": {"startLine": 101}}}]}, {"ruleId": "scanner-26c7d05b6ec45893", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "3b82c50ed1942210", "scanner": "scanner-primary", "fingerprint": "26c7d05b6ec45893", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/mega-linter.yaml"}, "region": {"startLine": 113}}}]}, {"ruleId": "scanner-26c7d05b6ec45893", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "7a6b0fe0aabd0526", "scanner": "scanner-primary", "fingerprint": "26c7d05b6ec45893", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/mega-linter.yaml"}, "region": {"startLine": 175}}}]}, {"ruleId": "scanner-848d817435f8b491", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "f29616b57f878b68", "scanner": "scanner-primary", "fingerprint": "848d817435f8b491", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/mega-linter.yaml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-8ee4e392dae61cf4", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "b5d27d0d98be3787", "scanner": "scanner-primary", "fingerprint": "8ee4e392dae61cf4", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/clean-ghcr.yaml"}, "region": {"startLine": 18}}}]}, {"ruleId": "scanner-b9d6befd0a1f265c", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "c882a0149c138b3a", "scanner": "scanner-primary", "fingerprint": "b9d6befd0a1f265c", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/clean-ghcr.yaml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-17f76c5a9f230937", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "76cb13e6c77134f5", "scanner": "scanner-primary", "fingerprint": "17f76c5a9f230937", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci-staging.yaml"}, "region": {"startLine": 29}}}]}, {"ruleId": "scanner-94906727b3a3b5c1", "level": "error", "message": {"text": "GitHub Action tracks a moving branch"}, "properties": {"repobilityId": "9d2c964255f65188", "scanner": "scanner-primary", "fingerprint": "94906727b3a3b5c1", "layer": "cicd", "severity": "high", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci-staging.yaml"}, "region": {"startLine": 34}}}]}, {"ruleId": "scanner-17f76c5a9f230937", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "76cb13e6c77134f5", "scanner": "scanner-primary", "fingerprint": "17f76c5a9f230937", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci-staging.yaml"}, "region": {"startLine": 51}}}]}, {"ruleId": "scanner-17f76c5a9f230937", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "da329780ecdb5ff0", "scanner": "scanner-primary", "fingerprint": "17f76c5a9f230937", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci-staging.yaml"}, "region": {"startLine": 57}}}]}, {"ruleId": "scanner-17f76c5a9f230937", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "c4d3912340e70e6a", "scanner": "scanner-primary", "fingerprint": "17f76c5a9f230937", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci-staging.yaml"}, "region": {"startLine": 64}}}]}, {"ruleId": "scanner-17f76c5a9f230937", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "76cb13e6c77134f5", "scanner": "scanner-primary", "fingerprint": "17f76c5a9f230937", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci-staging.yaml"}, "region": {"startLine": 87}}}]}, {"ruleId": "scanner-17f76c5a9f230937", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "bac97585797c62d5", "scanner": "scanner-primary", "fingerprint": "17f76c5a9f230937", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci-staging.yaml"}, "region": {"startLine": 90}}}]}, {"ruleId": "scanner-17f76c5a9f230937", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "76cb13e6c77134f5", "scanner": "scanner-primary", "fingerprint": "17f76c5a9f230937", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci-staging.yaml"}, "region": {"startLine": 110}}}]}, {"ruleId": "scanner-17f76c5a9f230937", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "33f1791f847ec4f5", "scanner": "scanner-primary", "fingerprint": "17f76c5a9f230937", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci-staging.yaml"}, "region": {"startLine": 113}}}]}, {"ruleId": "scanner-17f76c5a9f230937", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "76cb13e6c77134f5", "scanner": "scanner-primary", "fingerprint": "17f76c5a9f230937", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci-staging.yaml"}, "region": {"startLine": 145}}}]}, {"ruleId": "scanner-17f76c5a9f230937", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "74c08d4c08a22ffa", "scanner": "scanner-primary", "fingerprint": "17f76c5a9f230937", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci-staging.yaml"}, "region": {"startLine": 150}}}]}, {"ruleId": "scanner-db57df79aef9e04a", "level": "note", "message": {"text": "Very large file: tests/unit/test_reconcile_quotas.py (1326 lines)"}, "properties": {"repobilityId": "747caa63340a823e", "scanner": "scanner-primary", "fingerprint": "db57df79aef9e04a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-f643f10c224a53d1", "level": "note", "message": {"text": "Very large file: tests/unit/test_allocations_performance.py (1283 lines)"}, "properties": {"repobilityId": "8eb7f0db4412d509", "scanner": "scanner-primary", "fingerprint": "f643f10c224a53d1", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-c8a953c85f2e5ab6", "level": "note", "message": {"text": "Very large file: tests/unit/test_query_functions.py (1675 lines)"}, "properties": {"repobilityId": "ff3b7f982dd90ab6", "scanner": "scanner-primary", "fingerprint": "c8a953c85f2e5ab6", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-4ed3ae9f767e78cc", "level": "note", "message": {"text": "Very large file: src/webapp/dashboards/admin/projects_routes.py (2475 lines)"}, "properties": {"repobilityId": "252d9b1468466d48", "scanner": "scanner-primary", "fingerprint": "4ed3ae9f767e78cc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-f4748daa28464946", "level": "note", "message": {"text": "Very large file: src/webapp/dashboards/user/blueprint.py (1425 lines)"}, "properties": {"repobilityId": "3f4f4945e7a97cdd", "scanner": "scanner-primary", "fingerprint": "f4748daa28464946", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-9c9a90e84a481539", "level": "note", "message": {"text": "Very large file: src/sam/queries/allocations.py (1219 lines)"}, "properties": {"repobilityId": "4a2bd9349dd8ee36", "scanner": "scanner-primary", "fingerprint": "9c9a90e84a481539", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-d0fb610d1ea2e38c", "level": "note", "message": {"text": "Very large file: src/sam/projects/projects.py (1566 lines)"}, "properties": {"repobilityId": "7569549b80269623", "scanner": "scanner-primary", "fingerprint": "d0fb610d1ea2e38c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-67b288d9ad9542e1", "level": "note", "message": {"text": "Very large file: src/cli/accounting/commands.py (2009 lines)"}, "properties": {"repobilityId": "dc37eceb90bdd1d8", "scanner": "scanner-primary", "fingerprint": "67b288d9ad9542e1", "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": "d3774ab4f15c1ce5", "scanner": "scanner-primary", "fingerprint": "3ab5d313dda8e5f9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["debug", "cleanup", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-72b2a6250083a784", "level": "warning", "message": {"text": "Placeholder or mock-heavy implementation detected"}, "properties": {"repobilityId": "7ba9d17b250b50d2", "scanner": "scanner-primary", "fingerprint": "72b2a6250083a784", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "incomplete", "generated-repo-pattern"]}}, {"ruleId": "scanner-2d0c7b7ab8f8aacf", "level": "warning", "message": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "properties": {"repobilityId": "314bb802e1555c9e", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-17d866d91a7c451e", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: CLAUDE.md"}, "properties": {"repobilityId": "ccce5984e58a48f0", "scanner": "scanner-primary", "fingerprint": "17d866d91a7c451e", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "CLAUDE.md"}, "region": {"startLine": 694}}}]}, {"ruleId": "scanner-bea357a6497a2d5d", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: CLAUDE.md"}, "properties": {"repobilityId": "aae72df3934829ac", "scanner": "scanner-primary", "fingerprint": "bea357a6497a2d5d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "CLAUDE.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-bf837811743eb0b8", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: docs/presentations/CLAUDE.md"}, "properties": {"repobilityId": "a7126aff56014416", "scanner": "scanner-primary", "fingerprint": "bf837811743eb0b8", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/presentations/CLAUDE.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-1bea0f30aef0a8d0", "level": "none", "message": {"text": "Commented-code block (7 lines) in containers/sam-sql-dev/bootstrap_clone.py:252"}, "properties": {"repobilityId": "4452e594ce7c7c46", "scanner": "scanner-primary", "fingerprint": "1bea0f30aef0a8d0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3c663ddd22ae52a7", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 containers/sam-sql-dev/bootstrap_clone.py:106"}, "properties": {"repobilityId": "5c77467da22ca474", "scanner": "scanner-primary", "fingerprint": "3c663ddd22ae52a7", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-fd542802f380c502", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/conftest.py:23"}, "properties": {"repobilityId": "31d2a22140a8070c", "scanner": "scanner-primary", "fingerprint": "fd542802f380c502", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c1444873931c9b11", "level": "none", "message": {"text": "Commented-code block (6 lines) in tests/factories/core.py:10"}, "properties": {"repobilityId": "69cb60dcbcc28d10", "scanner": "scanner-primary", "fingerprint": "c1444873931c9b11", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5c0ecd16047e705a", "level": "none", "message": {"text": "Commented-code block (7 lines) in tests/api/test_schemas.py:31"}, "properties": {"repobilityId": "cc6fbaac693cd021", "scanner": "scanner-primary", "fingerprint": "5c0ecd16047e705a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-865b09ab9ca38e36", "level": "none", "message": {"text": "Commented-code block (7 lines) in tests/api/test_charge_endpoints.py:166"}, "properties": {"repobilityId": "fca0487b154e1b74", "scanner": "scanner-primary", "fingerprint": "865b09ab9ca38e36", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7cee18af8dfa95df", "level": "none", "message": {"text": "Commented-code block (6 lines) in tests/unit/test_rate_limiter.py:173"}, "properties": {"repobilityId": "c78a9e4dce3852a9", "scanner": "scanner-primary", "fingerprint": "7cee18af8dfa95df", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-54a3a6d1d100c74a", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/unit/test_webapp_jobs.py:1115"}, "properties": {"repobilityId": "35a23fcf6e5ce6e9", "scanner": "scanner-primary", "fingerprint": "54a3a6d1d100c74a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f5a0364528892bd5", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/unit/test_smoke.py:53"}, "properties": {"repobilityId": "178f9e6ed1eefb66", "scanner": "scanner-primary", "fingerprint": "f5a0364528892bd5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0e6782a34f23f7ef", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/unit/test_user_proj_usage.py:301"}, "properties": {"repobilityId": "87ee8baa6bab8b6d", "scanner": "scanner-primary", "fingerprint": "0e6782a34f23f7ef", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7d9891f52e9e327a", "level": "note", "message": {"text": "Legacy-named symbol `expected_legacy` in tests/unit/test_accounting_models.py:66"}, "properties": {"repobilityId": "b1347ffc8abb9711", "scanner": "scanner-primary", "fingerprint": "7d9891f52e9e327a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-9245fabe820461b2", "level": "none", "message": {"text": "Commented-code block (7 lines) in tests/unit/test_reconcile_quotas.py:892"}, "properties": {"repobilityId": "c5e2d02ee8be8c12", "scanner": "scanner-primary", "fingerprint": "9245fabe820461b2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-62e1e3b693535b27", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/unit/test_sam_search_cli_allocations.py:32"}, "properties": {"repobilityId": "baa1986bf2ac2162", "scanner": "scanner-primary", "fingerprint": "62e1e3b693535b27", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7c9593810d6752d1", "level": "note", "message": {"text": "Legacy-named symbol `intended_old` in tests/unit/test_remediation_audit_trail.py:56"}, "properties": {"repobilityId": "72b5e2bf49275754", "scanner": "scanner-primary", "fingerprint": "7c9593810d6752d1", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-c0507b5efacb1296", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/unit/test_rbac.py:63"}, "properties": {"repobilityId": "7e917d39542093e4", "scanner": "scanner-primary", "fingerprint": "c0507b5efacb1296", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-25ba1c2092552c0a", "level": "note", "message": {"text": "Legacy-named symbol `test_replace_true_logs_delete_transaction_on_old` in tests/unit/test_renew_extend.py:877"}, "properties": {"repobilityId": "b6c97aa44979e1a8", "scanner": "scanner-primary", "fingerprint": "25ba1c2092552c0a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-e6fee9a4818af24b", "level": "none", "message": {"text": "Commented-code block (7 lines) in tests/unit/test_renew_extend.py:325"}, "properties": {"repobilityId": "f1f20832b98f93ec", "scanner": "scanner-primary", "fingerprint": "e6fee9a4818af24b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e56699c876f17220", "level": "note", "message": {"text": "Legacy-named symbol `user_old` in tests/unit/test_current_disk_usage.py:225"}, "properties": {"repobilityId": "3de569be2ddea2e9", "scanner": "scanner-primary", "fingerprint": "e56699c876f17220", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-7ea3d13e251ea8ab", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/unit/test_manage_summaries.py:116"}, "properties": {"repobilityId": "143449313b3b0f82", "scanner": "scanner-primary", "fingerprint": "7ea3d13e251ea8ab", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-dac21d76c255c159", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/integration/test_schema_validation.py:74"}, "properties": {"repobilityId": "4fac25a2ec66d056", "scanner": "scanner-primary", "fingerprint": "dac21d76c255c159", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5beea9697ac67d0b", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/validate_user_proj_usage.py:485"}, "properties": {"repobilityId": "10ef7077846108e3", "scanner": "scanner-primary", "fingerprint": "5beea9697ac67d0b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3486ddd75bbd4a9d", "level": "note", "message": {"text": "Legacy-named symbol `intended_old` in utils/remediation/fix_cesm0002_audit_trail.py:132"}, "properties": {"repobilityId": "e9e03b4b94124fc0", "scanner": "scanner-primary", "fingerprint": "3486ddd75bbd4a9d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-054792f5f5e23ce1", "level": "none", "message": {"text": "Commented-code block (6 lines) in utils/remediation/fix_cesm0002_audit_trail.py:457"}, "properties": {"repobilityId": "7127d425625965f3", "scanner": "scanner-primary", "fingerprint": "054792f5f5e23ce1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bc7ac1238ea11cf3", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/webapp/config.py:63"}, "properties": {"repobilityId": "d3cc22461b9ff528", "scanner": "scanner-primary", "fingerprint": "bc7ac1238ea11cf3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6223d2d83c7e1a21", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/webapp/run.py:55"}, "properties": {"repobilityId": "f1df82f5249863c5", "scanner": "scanner-primary", "fingerprint": "6223d2d83c7e1a21", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-92c31117770a22de", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/webapp/static/js/fk-picker.js:13"}, "properties": {"repobilityId": "4d7257adfe55e37b", "scanner": "scanner-primary", "fingerprint": "92c31117770a22de", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fe5eb944a3396acb", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/webapp/static/js/htmx-config.js:31"}, "properties": {"repobilityId": "fb00e91da0ee7712", "scanner": "scanner-primary", "fingerprint": "fe5eb944a3396acb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-411b2b9beb8323f2", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/webapp/static/js/lazy-loading.js:14"}, "properties": {"repobilityId": "972add2df888f473", "scanner": "scanner-primary", "fingerprint": "411b2b9beb8323f2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6d6c0fb6aa6a79ab", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/webapp/static/js/sortable_table.js:77"}, "properties": {"repobilityId": "a8218708383a1060", "scanner": "scanner-primary", "fingerprint": "6d6c0fb6aa6a79ab", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b640272535f033f9", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/webapp/static/js/svg-chart-links.js:46"}, "properties": {"repobilityId": "5581bdcfc4a84b3c", "scanner": "scanner-primary", "fingerprint": "b640272535f033f9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f8ad34f2cc5deb12", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/webapp/static/js/nav-view-persistence.js:83"}, "properties": {"repobilityId": "3cdb6fd3952c1c13", "scanner": "scanner-primary", "fingerprint": "f8ad34f2cc5deb12", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-39d717dd643e6c9e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/webapp/static/js/nav-view-persistence.js:84"}, "properties": {"repobilityId": "13f681e3073a8df5", "scanner": "scanner-primary", "fingerprint": "39d717dd643e6c9e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-1bb2594abd62de2e", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/webapp/api/v1/projects.py:136"}, "properties": {"repobilityId": "19b7766d1c27072f", "scanner": "scanner-primary", "fingerprint": "1bb2594abd62de2e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6ecc43f07dc0db4f", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/webapp/jobs/routes.py:56"}, "properties": {"repobilityId": "0de7ca6c60bbf56c", "scanner": "scanner-primary", "fingerprint": "6ecc43f07dc0db4f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-34c99528ac338abc", "level": "none", "message": {"text": "Commented-code block (10 lines) in src/webapp/jobs/session.py:85"}, "properties": {"repobilityId": "850a5691bb50d137", "scanner": "scanner-primary", "fingerprint": "34c99528ac338abc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e5f02787d5ff9062", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/webapp/utils/config_inspect.py:204"}, "properties": {"repobilityId": "5bcd1393fa863e5b", "scanner": "scanner-primary", "fingerprint": "e5f02787d5ff9062", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-62650843b10eab82", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/webapp/utils/rbac.py:105"}, "properties": {"repobilityId": "291b61234e5d6242", "scanner": "scanner-primary", "fingerprint": "62650843b10eab82", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-162a6e904338b38d", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/webapp/caching/__init__.py:79"}, "properties": {"repobilityId": "275a8cd08737bee4", "scanner": "scanner-primary", "fingerprint": "162a6e904338b38d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5191f2f94eca81f9", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/webapp/limiter/__init__.py:112"}, "properties": {"repobilityId": "1545cbb9f6bc22dd", "scanner": "scanner-primary", "fingerprint": "5191f2f94eca81f9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9f6eb5fbbef143aa", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/webapp/dashboards/charts.py:115"}, "properties": {"repobilityId": "b8d1a52f242b8f55", "scanner": "scanner-primary", "fingerprint": "9f6eb5fbbef143aa", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-18aca8c189999475", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/webapp/dashboards/admin/projects_routes.py:619"}, "properties": {"repobilityId": "97d3b5ff90701b5e", "scanner": "scanner-primary", "fingerprint": "18aca8c189999475", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0a3ed1c7dd5db361", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/webapp/dashboards/user/blueprint.py:464"}, "properties": {"repobilityId": "35fe43307ce974fc", "scanner": "scanner-primary", "fingerprint": "0a3ed1c7dd5db361", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-835b614d7c324034", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/webapp/dashboards/allocations/blueprint.py:272"}, "properties": {"repobilityId": "ccc280eb501da86a", "scanner": "scanner-primary", "fingerprint": "835b614d7c324034", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7160f208378e0678", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/webapp/dashboards/status/blueprint.py:85"}, "properties": {"repobilityId": "6a7451765fa39f7c", "scanner": "scanner-primary", "fingerprint": "7160f208378e0678", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c7fea0915f5eb00e", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/sam/manage/renew.py:343"}, "properties": {"repobilityId": "c1fc2e6038b95c7d", "scanner": "scanner-primary", "fingerprint": "c7fea0915f5eb00e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0c497ff84430ba94", "level": "note", "message": {"text": "Legacy-named symbol `child_old` in src/sam/manage/allocations.py:377"}, "properties": {"repobilityId": "ea18028159074c05", "scanner": "scanner-primary", "fingerprint": "0c497ff84430ba94", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-a9d8e7f9568b999e", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/sam/manage/allocations.py:150"}, "properties": {"repobilityId": "2762601ce8f28548", "scanner": "scanner-primary", "fingerprint": "a9d8e7f9568b999e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1230f4c692088396", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/sam/core/users.py:536"}, "properties": {"repobilityId": "9fa46c631f3afac8", "scanner": "scanner-primary", "fingerprint": "1230f4c692088396", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a374cfc898df3a43", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/sam/accounting/allocations.py:427"}, "properties": {"repobilityId": "7f4bba9265401633", "scanner": "scanner-primary", "fingerprint": "a374cfc898df3a43", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-10ce67a5564d0bdd", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/sam/accounting/adjustments.py:7"}, "properties": {"repobilityId": "2f9753522e3aa04d", "scanner": "scanner-primary", "fingerprint": "10ce67a5564d0bdd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-23c1620bd56f6b6c", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/sam/summaries/comp_summaries.py:12"}, "properties": {"repobilityId": "d7f8df244f6e9d23", "scanner": "scanner-primary", "fingerprint": "23c1620bd56f6b6c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d1b896869bb0fcc1", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/sam/queries/rolling_usage.py:318"}, "properties": {"repobilityId": "e0bd5651c6a45b76", "scanner": "scanner-primary", "fingerprint": "d1b896869bb0fcc1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8ba09f4eb0d5ff52", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/sam/queries/fstree_access.py:128"}, "properties": {"repobilityId": "b26af46ec2c973ed", "scanner": "scanner-primary", "fingerprint": "8ba09f4eb0d5ff52", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ba39ab900cc8de02", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/sam/queries/dashboard.py:113"}, "properties": {"repobilityId": "ca3fd678fc6016a9", "scanner": "scanner-primary", "fingerprint": "ba39ab900cc8de02", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a6caaa6de42352d1", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/sam/queries/project_access.py:38"}, "properties": {"repobilityId": "a527480d148b64b6", "scanner": "scanner-primary", "fingerprint": "a6caaa6de42352d1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3841332d1600813d", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/sam/queries/disk_usage.py:770"}, "properties": {"repobilityId": "9f4b8867a2535a86", "scanner": "scanner-primary", "fingerprint": "3841332d1600813d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3eea7e4abefba80d", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/sam/queries/allocations.py:682"}, "properties": {"repobilityId": "9172003264b42172", "scanner": "scanner-primary", "fingerprint": "3eea7e4abefba80d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4e701fb40223abbc", "level": "none", "message": {"text": "Commented-code block (12 lines) in src/sam/projects/projects.py:367"}, "properties": {"repobilityId": "52f5cbe560f6ccc1", "scanner": "scanner-primary", "fingerprint": "4e701fb40223abbc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d807dba956ce4013", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/system_status/models/lookups.py:4"}, "properties": {"repobilityId": "30e45a1ccffd0d98", "scanner": "scanner-primary", "fingerprint": "d807dba956ce4013", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-48edf9bfa9b4f89a", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/system_status/models/user_proj_queues.py:49"}, "properties": {"repobilityId": "1ae7dac35ebc27cd", "scanner": "scanner-primary", "fingerprint": "48edf9bfa9b4f89a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a61af5632befcb23", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/system_status/queries/user_proj_queue_ingest.py:85"}, "properties": {"repobilityId": "8348dbd8496c48a0", "scanner": "scanner-primary", "fingerprint": "a61af5632befcb23", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7acc4986c0d950d1", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/system_status/queries/user_proj_usage.py:64"}, "properties": {"repobilityId": "53e6900197e84b3c", "scanner": "scanner-primary", "fingerprint": "7acc4986c0d950d1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5d543e5f9e48cc1e", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/system_status/queries/lookups.py:107"}, "properties": {"repobilityId": "6e1250e5e1ff93c3", "scanner": "scanner-primary", "fingerprint": "5d543e5f9e48cc1e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-96449501d6e85fc7", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/system_status/queries/user_proj_queues.py:182"}, "properties": {"repobilityId": "150a34169703b14a", "scanner": "scanner-primary", "fingerprint": "96449501d6e85fc7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-670b2c62ec82484f", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/cli/cmds/admin.py:305"}, "properties": {"repobilityId": "ee0ac64c08ad5e2b", "scanner": "scanner-primary", "fingerprint": "670b2c62ec82484f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6d3cba7a666f50a6", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/cli/user/display.py:162"}, "properties": {"repobilityId": "e3224f3ef331cd9e", "scanner": "scanner-primary", "fingerprint": "6d3cba7a666f50a6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f68d82dc0001dd0b", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/cli/accounting/path_verifier.py:97"}, "properties": {"repobilityId": "e8362bdfb420043b", "scanner": "scanner-primary", "fingerprint": "f68d82dc0001dd0b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-35ae3c8e9b82d12d", "level": "note", "message": {"text": "Legacy-named symbol `n_deleted_legacy` in src/cli/accounting/commands.py:751"}, "properties": {"repobilityId": "e950417e43e5ed4c", "scanner": "scanner-primary", "fingerprint": "35ae3c8e9b82d12d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-e3fb4334c143ed67", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/cli/accounting/commands.py:58"}, "properties": {"repobilityId": "7ea4b64e37f6195d", "scanner": "scanner-primary", "fingerprint": "e3fb4334c143ed67", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9b170c2928538e82", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/cli/accounting/disk_usage/glade_csv.py:45"}, "properties": {"repobilityId": "160faff03bfba6a1", "scanner": "scanner-primary", "fingerprint": "9b170c2928538e82", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f6754389fc2f4ed9", "level": "note", "message": {"text": "74 env vars used in code but missing from .env.example"}, "properties": {"repobilityId": "18791db78efc69f2", "scanner": "scanner-primary", "fingerprint": "f6754389fc2f4ed9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "config-drift"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "ec254fc9707cce5f", "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": "0d151ae3f6755407", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-be46ea126aa5d8dc", "level": "note", "message": {"text": "Near-duplicate function bodies in 3 places"}, "properties": {"repobilityId": "ac2385392f0844b7", "scanner": "scanner-primary", "fingerprint": "be46ea126aa5d8dc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-be46ea126aa5d8dc", "level": "note", "message": {"text": "Near-duplicate function bodies in 3 places"}, "properties": {"repobilityId": "075ef7a8b54cdd20", "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": "d05b38e731022e2a", "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": "7f36da6764b636a1", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "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": "d7b0af2f09860ea2", "scanner": "scanner-primary", "fingerprint": "0027e313ade46c8f", "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": "2cc92feb5af1b799", "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": "e86dfe57db6b464e", "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": "39ccd0d60c908270", "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": "8ebce8c49176c13f", "scanner": "scanner-primary", "fingerprint": "49c98f7cedd9c977", "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": "f67ff49bb4f3b99c", "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": "3f8925ef2c6fe9a7", "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": "970da48ae98203a6", "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": "216726d8555f8cb2", "scanner": "scanner-primary", "fingerprint": "49c98f7cedd9c977", "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": "18ace2b79b4644e6", "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": "4c74a11ff8ebf646", "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": "2b1bf838010aff0e", "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": "805cb102c862f203", "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": "0b53e2bc483c7c2d", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-9fd4817b13ae20ee", "level": "error", "message": {"text": "Flask mutation route `refresh_cache` without `@login_required` \u2014 src/webapp/api/v1/directory_access.py:82"}, "properties": {"repobilityId": "611fb0af958594b5", "scanner": "scanner-primary", "fingerprint": "9fd4817b13ae20ee", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.flask.unauth_route"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/webapp/api/v1/directory_access.py"}, "region": {"startLine": 82}}}]}, {"ruleId": "scanner-8d36da2ec641d596", "level": "error", "message": {"text": "Flask mutation route `refresh_cache` without `@login_required` \u2014 src/webapp/api/v1/fstree_access.py:225"}, "properties": {"repobilityId": "02c6e537327b7494", "scanner": "scanner-primary", "fingerprint": "8d36da2ec641d596", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.flask.unauth_route"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/webapp/api/v1/fstree_access.py"}, "region": {"startLine": 225}}}]}, {"ruleId": "scanner-22f72f2730115730", "level": "error", "message": {"text": "Flask mutation route `refresh_cache` without `@login_required` \u2014 src/webapp/api/v1/project_access.py:89"}, "properties": {"repobilityId": "c2dafda2a760ea9a", "scanner": "scanner-primary", "fingerprint": "22f72f2730115730", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.flask.unauth_route"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/webapp/api/v1/project_access.py"}, "region": {"startLine": 89}}}]}, {"ruleId": "scanner-ff44c1aadc3596dd", "level": "error", "message": {"text": "Flask mutation route `ingest_derecho` without `@login_required` \u2014 src/webapp/api/v1/status.py:214"}, "properties": {"repobilityId": "14c9c0c88b155c94", "scanner": "scanner-primary", "fingerprint": "ff44c1aadc3596dd", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.flask.unauth_route"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/webapp/api/v1/status.py"}, "region": {"startLine": 214}}}]}, {"ruleId": "scanner-929877828d2909bc", "level": "error", "message": {"text": "Flask mutation route `ingest_casper` without `@login_required` \u2014 src/webapp/api/v1/status.py:248"}, "properties": {"repobilityId": "323e3a338c2a47f5", "scanner": "scanner-primary", "fingerprint": "929877828d2909bc", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.flask.unauth_route"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/webapp/api/v1/status.py"}, "region": {"startLine": 248}}}]}, {"ruleId": "scanner-79f06cdca3a3b98a", "level": "error", "message": {"text": "Flask mutation route `ingest_jupyterhub` without `@login_required` \u2014 src/webapp/api/v1/status.py:283"}, "properties": {"repobilityId": "68f92d8d947f5699", "scanner": "scanner-primary", "fingerprint": "79f06cdca3a3b98a", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.flask.unauth_route"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/webapp/api/v1/status.py"}, "region": {"startLine": 283}}}]}, {"ruleId": "scanner-ceb8b27321c9e6bb", "level": "error", "message": {"text": "Flask mutation route `report_outage` without `@login_required` \u2014 src/webapp/api/v1/status.py:327"}, "properties": {"repobilityId": "4852214cb7972ef1", "scanner": "scanner-primary", "fingerprint": "ceb8b27321c9e6bb", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.flask.unauth_route"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/webapp/api/v1/status.py"}, "region": {"startLine": 327}}}]}, {"ruleId": "scanner-cccbdec5403c5deb", "level": "error", "message": {"text": "Flask mutation route `<anonymous>` without `@login_required` \u2014 src/webapp/auth/blueprint.py:53"}, "properties": {"repobilityId": "4e1ee3b2d29600c6", "scanner": "scanner-primary", "fingerprint": "cccbdec5403c5deb", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.flask.unauth_route"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/webapp/auth/blueprint.py"}, "region": {"startLine": 53}}}]}]}]}