{"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-68d0ffefbe130d0d", "name": "Possibly dead Python function: init_logs", "shortDescription": {"text": "Possibly dead Python function: init_logs"}, "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-96bb5776b4bf1826", "name": "Possibly dead Python function: calculate", "shortDescription": {"text": "Possibly dead Python function: calculate"}, "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-64376e03dfa2123b", "name": "Possibly dead Python function: can_parse", "shortDescription": {"text": "Possibly dead Python function: can_parse"}, "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-0c10ddcfbf381622", "name": "Possibly dead Python function: station_to_zone", "shortDescription": {"text": "Possibly dead Python function: station_to_zone"}, "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-13b3f23ec127facf", "name": "Possibly dead Python function: detect_station_rate_format", "shortDescription": {"text": "Possibly dead Python function: detect_station_rate_format"}, "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-c910d771be3e5596", "name": "Possibly dead Python function: fill_partial_zone_matrix", "shortDescription": {"text": "Possibly dead Python function: fill_partial_zone_matrix"}, "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-d4c106f9b74fe28d", "name": "Possibly dead Python function: ocr_image", "shortDescription": {"text": "Possibly dead Python function: ocr_image"}, "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-8cafcf80d690b104", "name": "Possibly dead Python function: smart_merge", "shortDescription": {"text": "Possibly dead Python function: smart_merge"}, "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-c9958e2b9d680af7", "name": "Possibly dead Python function: auto_enhance_utsf_data", "shortDescription": {"text": "Possibly dead Python function: auto_enhance_utsf_data"}, "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-c882e74e5d455f1d", "name": "Possibly dead Python function: predict_zone_rate", "shortDescription": {"text": "Possibly dead Python function: predict_zone_rate"}, "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-47998d9e61bf607d", "name": "Possibly dead Python function: predict_phone", "shortDescription": {"text": "Possibly dead Python function: predict_phone"}, "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-2e409a5d980aeba9", "name": "Possibly dead Python function: predict_email", "shortDescription": {"text": "Possibly dead Python function: predict_email"}, "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-71db224a42dd50d8", "name": "Possibly dead Python function: predict_enhancement_potential", "shortDescription": {"text": "Possibly dead Python function: predict_enhancement_potential"}, "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-433847b2d51126eb", "name": "Possibly dead Python function: generate_ml_performance_report", "shortDescription": {"text": "Possibly dead Python function: generate_ml_performance_report"}, "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-ee5253d29bfc0305", "name": "Possibly dead Python function: test_analytics", "shortDescription": {"text": "Possibly dead Python function: test_analytics"}, "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-4b23028869882dcc", "name": "Possibly dead Python function: all_zone_pincodes", "shortDescription": {"text": "Possibly dead Python function: all_zone_pincodes"}, "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-b1fa56c0d5323993", "name": "Possibly dead Python function: group_by_canonical_zone", "shortDescription": {"text": "Possibly dead Python function: group_by_canonical_zone"}, "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-55ef5eb3e596fd86", "name": "Possibly dead Python function: extract_category_text", "shortDescription": {"text": "Possibly dead Python function: extract_category_text"}, "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-32859c3709b27d3f", "name": "Possibly dead Python function: is_dangerous_section", "shortDescription": {"text": "Possibly dead Python function: is_dangerous_section"}, "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-927ae546b87aac74", "name": "Possibly dead Python function: lookup_state", "shortDescription": {"text": "Possibly dead Python function: lookup_state"}, "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-65820f54d03fb365", "name": "Possibly dead Python function: is_known", "shortDescription": {"text": "Possibly dead Python function: is_known"}, "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-39bf77fca5841323", "name": "Possibly dead Python function: validate_zone_pincodes", "shortDescription": {"text": "Possibly dead Python function: validate_zone_pincodes"}, "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-7927fe1c66d95327", "name": "Possibly dead Python function: infer_canonical_zones", "shortDescription": {"text": "Possibly dead Python function: infer_canonical_zones"}, "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-aefa7c0e0adc892b", "name": "Possibly dead Python function: resolve_flat_pincodes", "shortDescription": {"text": "Possibly dead Python function: resolve_flat_pincodes"}, "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-8faa7775fb2bd8e5", "name": "Possibly dead Python function: validate_zone_matrix", "shortDescription": {"text": "Possibly dead Python function: validate_zone_matrix"}, "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-583075660ceb6c45", "name": "Possibly dead Python function: fill_symmetric_rates", "shortDescription": {"text": "Possibly dead Python function: fill_symmetric_rates"}, "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-d63da3583b14afc0", "name": "Dockerfile runs as root: Dockerfile", "shortDescription": {"text": "Dockerfile runs as root: Dockerfile"}, "fullDescription": {"text": "No non-root USER set. Containers running as root expand the blast radius of any vulnerability inside the image."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e066691601852931", "name": "Docker base image is tag-pinned but not digest-pinned: python:3.11-slim", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: python:3.11-slim"}, "fullDescription": {"text": "Container tags can be retagged upstream. Pin production base images to a reviewed digest (`image@sha256:...`) when reproducibility and supply-chain integrity matter."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-aa5acaa49eb8315b", "name": "Containers defined but no K8s/orchestration manifest found", "shortDescription": {"text": "Containers defined but no K8s/orchestration manifest found"}, "fullDescription": {"text": "Repo has Dockerfiles/compose but no Kubernetes/Nomad manifests. If the target deployment is K8s, the manifests may live in a separate ops repo."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9710c8d059e53154", "name": "No frontend routes/components detected", "shortDescription": {"text": "No frontend routes/components detected"}, "fullDescription": {"text": "No React/Vue/Next routes were found. This is fine for backend-only repos."}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-62ad1d7d2c914675", "name": "Insecure pattern 'exec_used' in src/knowledge/smart_matcher.py:80", "shortDescription": {"text": "Insecure pattern 'exec_used' in src/knowledge/smart_matcher.py:80"}, "fullDescription": {"text": "Found a known-risky pattern (exec_used). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6372cebde0220094", "name": "No auth library detected", "shortDescription": {"text": "No auth library detected"}, "fullDescription": {"text": "The scanner did not find any standard auth library (JWT, OAuth, NextAuth, Auth0, etc.). The repo has auth/admin/session surface indicators, so auth may live in custom code, in a separate service, or be missing."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-4601e3ad3bb28677", "name": "No CI/CD pipelines detected", "shortDescription": {"text": "No CI/CD pipelines detected"}, "fullDescription": {"text": "No GitHub Actions, GitLab CI, or CircleCI configs found. Without CI you can't gate deploys on tests/lints."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2b0ccd225b5b5a59", "name": "Very large file: src/parsers/pdf_parser.py (1378 lines)", "shortDescription": {"text": "Very large file: src/parsers/pdf_parser.py (1378 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-8afcce203724acbe", "name": "Very large file: src/parsers/excel_parser.py (3007 lines)", "shortDescription": {"text": "Very large file: src/parsers/excel_parser.py (3007 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-abc9a72daa9133a9", "name": "Very large file: src/parsers/oicr_engine.py (1780 lines)", "shortDescription": {"text": "Very large file: src/parsers/oicr_engine.py (1780 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-234a3f42b01e7869", "name": "Very large file: src/web/app.py (1851 lines)", "shortDescription": {"text": "Very large file: src/web/app.py (1851 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6893a6c8b0861585", "name": "Very low test-to-source ratio", "shortDescription": {"text": "Very low test-to-source ratio"}, "fullDescription": {"text": "1 test file(s) for 45 source file(s) (ratio 0.02). Consider adding integration or unit tests for critical paths."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-141b30a41e03817b", "name": "No license file detected", "shortDescription": {"text": "No license file detected"}, "fullDescription": {"text": "No LICENSE/COPYING/NOTICE file was found. Generated repositories often omit licensing, which blocks reuse and automated intake."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-faccb9061e9b52a0", "name": "No README detected", "shortDescription": {"text": "No README detected"}, "fullDescription": {"text": "No README file was found. Generated repos without README context are hard to operate, validate, or safely hand off."}, "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 668 console/debugger/print-style debug statements in non-test source. This is a common fast-generation residue before production cleanup."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2d0c7b7ab8f8aacf", "name": "Critical user flow still appears backed by mock or placeholder data", "shortDescription": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "fullDescription": {"text": "A payment/auth/admin/order/billing-style flow contains mock, fake, TODO, dummy, or placeholder markers in runtime source. In the Fable corpus this is a high-leverage completeness smell: the app can look finished while the money, identity, or tenant flow is still scaffolded."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b9088664ace7f748", "name": "Composite production-readiness gap", "shortDescription": {"text": "Composite production-readiness gap"}, "fullDescription": {"text": "Multiple low-cost hardening controls are missing together: license, ci, operator-readme. Opus verification showed these co-occurring gaps are a better readiness signal than reading each flag in isolation."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ea8f3013f588db25", "name": "Shallow git history limits provenance confidence", "shortDescription": {"text": "Shallow git history limits provenance confidence"}, "fullDescription": {"text": "The repository is a shallow clone. Origin/evolution analysis cannot distinguish fresh generation, imported legacy code, or long-lived human code with high confidence."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8424db9c75e04ba4", "name": "Very short observed git history", "shortDescription": {"text": "Very short observed git history"}, "fullDescription": {"text": "The repo has multiple source files but two or fewer visible commits. This is not a failure by itself, but it lowers confidence in evolution-based diagnosis."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ca5d991c3ed3f73f", "name": "Network/subprocess call without timeout or try/except \u2014 setup.py:18", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 setup.py:18"}, "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-b41b8a43307cd430", "name": "Commented-code block (5 lines) in src/fc4_schema.py:202", "shortDescription": {"text": "Commented-code block (5 lines) in src/fc4_schema.py:202"}, "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-62a30850f8f900b3", "name": "Commented-code block (5 lines) in src/main.py:254", "shortDescription": {"text": "Commented-code block (5 lines) in src/main.py:254"}, "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-fb2b6b4f7631afdb", "name": "Commented-code block (7 lines) in src/parsers/pdf_parser.py:698", "shortDescription": {"text": "Commented-code block (7 lines) in src/parsers/pdf_parser.py:698"}, "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-1ec81a0504a1e1f4", "name": "Commented-code block (5 lines) in src/parsers/excel_parser.py:827", "shortDescription": {"text": "Commented-code block (5 lines) in src/parsers/excel_parser.py:827"}, "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-2bfad36522306127", "name": "Commented-code block (5 lines) in src/parsers/oicr_engine.py:189", "shortDescription": {"text": "Commented-code block (5 lines) in src/parsers/oicr_engine.py:189"}, "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-d85a924b094afc87", "name": "Commented-code block (5 lines) in src/intelligence/ml_enhancer.py:284", "shortDescription": {"text": "Commented-code block (5 lines) in src/intelligence/ml_enhancer.py:284"}, "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-cbc874f7977f5965", "name": "Network/subprocess call without timeout or try/except \u2014 src/web/app.py:653", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 src/web/app.py:653"}, "fullDescription": {"text": "`subprocess.Popen(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-de403301b5b1fb1c", "name": "Legacy-named symbol `migration_v2` in src/builder/fc4_encoder.py:912", "shortDescription": {"text": "Legacy-named symbol `migration_v2` in src/builder/fc4_encoder.py:912"}, "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-bd0cd63c8b1a70aa", "name": "Commented-code block (13 lines) in src/builder/fc4_encoder.py:419", "shortDescription": {"text": "Commented-code block (13 lines) in src/builder/fc4_encoder.py:419"}, "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-ba1a2d44d3e657dd", "name": "Commented-code block (5 lines) in src/builder/zone_mapper.py:356", "shortDescription": {"text": "Commented-code block (5 lines) in src/builder/zone_mapper.py:356"}, "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-1981158b2d9ee4d5", "name": "Commented-code block (7 lines) in src/knowledge/smart_matcher.py:120", "shortDescription": {"text": "Commented-code block (7 lines) in src/knowledge/smart_matcher.py:120"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2c04133e54348533", "name": "Near-duplicate function bodies in 2 places", "shortDescription": {"text": "Near-duplicate function bodies in 2 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\nsrc/web/app.py:write, src/web/app.py:write\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-fee9379c6dc1d98c", "name": "FastAPI POST `create_transporter` without auth dependency \u2014 src/web/app.py:421", "shortDescription": {"text": "FastAPI POST `create_transporter` without auth dependency \u2014 src/web/app.py:421"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c9212a6c0310aee0", "name": "FastAPI POST `set_transporter_meta` without auth dependency \u2014 src/web/app.py:454", "shortDescription": {"text": "FastAPI POST `set_transporter_meta` without auth dependency \u2014 src/web/app.py:454"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1798fcadc30d7fd7", "name": "FastAPI POST `upload_files` without auth dependency \u2014 src/web/app.py:514", "shortDescription": {"text": "FastAPI POST `upload_files` without auth dependency \u2014 src/web/app.py:514"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ecb697cc57139e4b", "name": "FastAPI DELETE `delete_file` without auth dependency \u2014 src/web/app.py:552", "shortDescription": {"text": "FastAPI DELETE `delete_file` without auth dependency \u2014 src/web/app.py:552"}, "fullDescription": {"text": "`@router.delete` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-383d9c8787064ad9", "name": "FastAPI POST `move_file` without auth dependency \u2014 src/web/app.py:566", "shortDescription": {"text": "FastAPI POST `move_file` without auth dependency \u2014 src/web/app.py:566"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d060f139f7221b05", "name": "FastAPI PATCH `patch_utsf_field` without auth dependency \u2014 src/web/app.py:926", "shortDescription": {"text": "FastAPI PATCH `patch_utsf_field` without auth dependency \u2014 src/web/app.py:926"}, "fullDescription": {"text": "`@router.patch` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ee5ee3b6ca360b32", "name": "FastAPI DELETE `delete_output` without auth dependency \u2014 src/web/app.py:998", "shortDescription": {"text": "FastAPI DELETE `delete_output` without auth dependency \u2014 src/web/app.py:998"}, "fullDescription": {"text": "`@router.delete` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-78adfce73ceddd63", "name": "FastAPI DELETE `delete_transporter` without auth dependency \u2014 src/web/app.py:1017", "shortDescription": {"text": "FastAPI DELETE `delete_transporter` without auth dependency \u2014 src/web/app.py:1017"}, "fullDescription": {"text": "`@router.delete` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5331e536a8220727", "name": "FastAPI POST `migrate_upload` without auth dependency \u2014 src/web/app.py:1047", "shortDescription": {"text": "FastAPI POST `migrate_upload` without auth dependency \u2014 src/web/app.py:1047"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-12dd058a570b6417", "name": "FastAPI POST `api_learn` without auth dependency \u2014 src/web/app.py:1075", "shortDescription": {"text": "FastAPI POST `api_learn` without auth dependency \u2014 src/web/app.py:1075"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e2c08f80fe599d04", "name": "FastAPI POST `api_extract_prices` without auth dependency \u2014 src/web/app.py:1319", "shortDescription": {"text": "FastAPI POST `api_extract_prices` without auth dependency \u2014 src/web/app.py:1319"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-41e6cd5a89049ed4", "name": "FastAPI POST `api_generate_bulk` without auth dependency \u2014 src/web/app.py:1526", "shortDescription": {"text": "FastAPI POST `api_generate_bulk` without auth dependency \u2014 src/web/app.py:1526"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f37a640af4be887f", "name": "FastAPI POST `api_classify_files` without auth dependency \u2014 src/web/app.py:1637", "shortDescription": {"text": "FastAPI POST `api_classify_files` without auth dependency \u2014 src/web/app.py:1637"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6df50817e9d1a302", "name": "FastAPI POST `import_input_data` without auth dependency \u2014 src/web/app.py:1738", "shortDescription": {"text": "FastAPI POST `import_input_data` without auth dependency \u2014 src/web/app.py:1738"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5baa8971ebe192a1", "name": "Unused endpoint: GET /", "shortDescription": {"text": "Unused endpoint: GET /"}, "fullDescription": {"text": "`src/web/app.py` declares `GET /` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-03e196e214b2a675", "name": "Unused endpoint: POST /transporter/create", "shortDescription": {"text": "Unused endpoint: POST /transporter/create"}, "fullDescription": {"text": "`src/web/app.py` declares `POST /transporter/create` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-17be575bb4b4cf64", "name": "Unused endpoint: POST /api/transporter/<name>/set-meta", "shortDescription": {"text": "Unused endpoint: POST /api/transporter/<name>/set-meta"}, "fullDescription": {"text": "`src/web/app.py` declares `POST /api/transporter/<name>/set-meta` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c5bd96e4d236d90b", "name": "Unused endpoint: GET /transporter/<name>", "shortDescription": {"text": "Unused endpoint: GET /transporter/<name>"}, "fullDescription": {"text": "`src/web/app.py` declares `GET /transporter/<name>` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b649bd6cc5a351f3", "name": "Unused endpoint: POST /transporter/<name>/upload", "shortDescription": {"text": "Unused endpoint: POST /transporter/<name>/upload"}, "fullDescription": {"text": "`src/web/app.py` declares `POST /transporter/<name>/upload` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ed7e2be211fc13d9", "name": "Unused endpoint: DELETE /transporter/<name>/file", "shortDescription": {"text": "Unused endpoint: DELETE /transporter/<name>/file"}, "fullDescription": {"text": "`src/web/app.py` declares `DELETE /transporter/<name>/file` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7ebfe5ae2f75fb8a", "name": "Unused endpoint: POST /transporter/<name>/move-file", "shortDescription": {"text": "Unused endpoint: POST /transporter/<name>/move-file"}, "fullDescription": {"text": "`src/web/app.py` declares `POST /transporter/<name>/move-file` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-51bc99531ac85cc7", "name": "Unused endpoint: GET /transporter/<name>/generate", "shortDescription": {"text": "Unused endpoint: GET /transporter/<name>/generate"}, "fullDescription": {"text": "`src/web/app.py` declares `GET /transporter/<name>/generate` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d2fe809c27ec6b37", "name": "Unused endpoint: GET /output/<name>", "shortDescription": {"text": "Unused endpoint: GET /output/<name>"}, "fullDescription": {"text": "`src/web/app.py` declares `GET /output/<name>` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-07b16a97221cc225", "name": "Unused endpoint: GET /output/<name>/download", "shortDescription": {"text": "Unused endpoint: GET /output/<name>/download"}, "fullDescription": {"text": "`src/web/app.py` declares `GET /output/<name>/download` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-80b98fda0fb13af1", "name": "Unused endpoint: GET /api/output/<name>/needs-manual-input", "shortDescription": {"text": "Unused endpoint: GET /api/output/<name>/needs-manual-input"}, "fullDescription": {"text": "`src/web/app.py` declares `GET /api/output/<name>/needs-manual-input` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1a0835a91c2fd735", "name": "Unused endpoint: GET /api/output/<name>/review", "shortDescription": {"text": "Unused endpoint: GET /api/output/<name>/review"}, "fullDescription": {"text": "`src/web/app.py` declares `GET /api/output/<name>/review` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-76c2c2d5bf560d88", "name": "Unused endpoint: PATCH /api/output/<name>/field", "shortDescription": {"text": "Unused endpoint: PATCH /api/output/<name>/field"}, "fullDescription": {"text": "`src/web/app.py` declares `PATCH /api/output/<name>/field` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-31648f834fd78ade", "name": "Unused endpoint: DELETE /output/<name>", "shortDescription": {"text": "Unused endpoint: DELETE /output/<name>"}, "fullDescription": {"text": "`src/web/app.py` declares `DELETE /output/<name>` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-20814c448f59b12f", "name": "Unused endpoint: DELETE /transporter/<name>", "shortDescription": {"text": "Unused endpoint: DELETE /transporter/<name>"}, "fullDescription": {"text": "`src/web/app.py` declares `DELETE /transporter/<name>` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e357ab37bb466af6", "name": "Unused endpoint: GET /migrate", "shortDescription": {"text": "Unused endpoint: GET /migrate"}, "fullDescription": {"text": "`src/web/app.py` declares `GET /migrate` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5c43662dce498972", "name": "Unused endpoint: POST /migrate", "shortDescription": {"text": "Unused endpoint: POST /migrate"}, "fullDescription": {"text": "`src/web/app.py` declares `POST /migrate` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f9c4fe0f5381e2a7", "name": "Unused endpoint: POST /api/learn", "shortDescription": {"text": "Unused endpoint: POST /api/learn"}, "fullDescription": {"text": "`src/web/app.py` declares `POST /api/learn` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3c9b273773ee3513", "name": "Unused endpoint: GET /api/learn-stats", "shortDescription": {"text": "Unused endpoint: GET /api/learn-stats"}, "fullDescription": {"text": "`src/web/app.py` declares `GET /api/learn-stats` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-18a4887e7bea6b36", "name": "Unused endpoint: GET /compare", "shortDescription": {"text": "Unused endpoint: GET /compare"}, "fullDescription": {"text": "`src/web/app.py` declares `GET /compare` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-36aa9f8e622a0740", "name": "Unused endpoint: GET /api/compare", "shortDescription": {"text": "Unused endpoint: GET /api/compare"}, "fullDescription": {"text": "`src/web/app.py` declares `GET /api/compare` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-cfce95b9961b8bb7", "name": "Unused endpoint: POST /api/extract-prices", "shortDescription": {"text": "Unused endpoint: POST /api/extract-prices"}, "fullDescription": {"text": "`src/web/app.py` declares `POST /api/extract-prices` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f27c2800dcf83301", "name": "Unused endpoint: POST /api/generate-bulk", "shortDescription": {"text": "Unused endpoint: POST /api/generate-bulk"}, "fullDescription": {"text": "`src/web/app.py` declares `POST /api/generate-bulk` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-db0d74ca592c1a54", "name": "Unused endpoint: POST /api/classify-files", "shortDescription": {"text": "Unused endpoint: POST /api/classify-files"}, "fullDescription": {"text": "`src/web/app.py` declares `POST /api/classify-files` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-963710f42a2c8219", "name": "Unused endpoint: GET /api/status", "shortDescription": {"text": "Unused endpoint: GET /api/status"}, "fullDescription": {"text": "`src/web/app.py` declares `GET /api/status` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-28e459b82f30bccd", "name": "Unused endpoint: GET /input-data", "shortDescription": {"text": "Unused endpoint: GET /input-data"}, "fullDescription": {"text": "`src/web/app.py` declares `GET /input-data` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-288179b117c89f49", "name": "Unused endpoint: POST /input-data/import/<folder_name>", "shortDescription": {"text": "Unused endpoint: POST /input-data/import/<folder_name>"}, "fullDescription": {"text": "`src/web/app.py` declares `POST /input-data/import/<folder_name>` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}]}}, "automationDetails": {"id": "repobility/20904"}, "properties": {"repository": "tech-forus/utsf-generator", "repoUrl": "https://github.com/tech-forus/utsf-generator", "branch": "main"}, "results": [{"ruleId": "scanner-68d0ffefbe130d0d", "level": "note", "message": {"text": "Possibly dead Python function: init_logs"}, "properties": {"repobilityId": "e2916c24c3f7aa37", "scanner": "scanner-primary", "fingerprint": "68d0ffefbe130d0d", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/utsf_logger.py:9"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-96bb5776b4bf1826", "level": "note", "message": {"text": "Possibly dead Python function: calculate"}, "properties": {"repobilityId": "9d5dc3ee8915b454", "scanner": "scanner-primary", "fingerprint": "96bb5776b4bf1826", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/parsers/tci_parser.py:24"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-64376e03dfa2123b", "level": "note", "message": {"text": "Possibly dead Python function: can_parse"}, "properties": {"repobilityId": "94c1b98ef33d084b", "scanner": "scanner-primary", "fingerprint": "64376e03dfa2123b", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/parsers/base_parser.py:36"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-0c10ddcfbf381622", "level": "note", "message": {"text": "Possibly dead Python function: station_to_zone"}, "properties": {"repobilityId": "26d1c3c20cd32658", "scanner": "scanner-primary", "fingerprint": "0c10ddcfbf381622", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/parsers/oicr_engine.py:301"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-13b3f23ec127facf", "level": "note", "message": {"text": "Possibly dead Python function: detect_station_rate_format"}, "properties": {"repobilityId": "2bdfc31bdbc540fe", "scanner": "scanner-primary", "fingerprint": "13b3f23ec127facf", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/parsers/oicr_engine.py:603"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-c910d771be3e5596", "level": "note", "message": {"text": "Possibly dead Python function: fill_partial_zone_matrix"}, "properties": {"repobilityId": "5f835545695cff64", "scanner": "scanner-primary", "fingerprint": "c910d771be3e5596", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/parsers/oicr_engine.py:902"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d4c106f9b74fe28d", "level": "note", "message": {"text": "Possibly dead Python function: ocr_image"}, "properties": {"repobilityId": "93d0ee2faf03f418", "scanner": "scanner-primary", "fingerprint": "d4c106f9b74fe28d", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/parsers/oicr_engine.py:1443"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-8cafcf80d690b104", "level": "note", "message": {"text": "Possibly dead Python function: smart_merge"}, "properties": {"repobilityId": "f959370364cb5d47", "scanner": "scanner-primary", "fingerprint": "8cafcf80d690b104", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/intelligence/ollama_client.py:181"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-c9958e2b9d680af7", "level": "note", "message": {"text": "Possibly dead Python function: auto_enhance_utsf_data"}, "properties": {"repobilityId": "ae57b0e5a4bfeffb", "scanner": "scanner-primary", "fingerprint": "c9958e2b9d680af7", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/intelligence/auto_enhancer.py:264"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-c882e74e5d455f1d", "level": "note", "message": {"text": "Possibly dead Python function: predict_zone_rate"}, "properties": {"repobilityId": "dfe001adec907e1f", "scanner": "scanner-primary", "fingerprint": "c882e74e5d455f1d", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/intelligence/ml_enhancer.py:272"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-47998d9e61bf607d", "level": "note", "message": {"text": "Possibly dead Python function: predict_phone"}, "properties": {"repobilityId": "f0a42ae34fd22f43", "scanner": "scanner-primary", "fingerprint": "47998d9e61bf607d", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/intelligence/ml_enhancer.py:317"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-2e409a5d980aeba9", "level": "note", "message": {"text": "Possibly dead Python function: predict_email"}, "properties": {"repobilityId": "d4788231ca6c13ce", "scanner": "scanner-primary", "fingerprint": "2e409a5d980aeba9", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/intelligence/ml_enhancer.py:337"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-71db224a42dd50d8", "level": "note", "message": {"text": "Possibly dead Python function: predict_enhancement_potential"}, "properties": {"repobilityId": "d92af64f76a0988c", "scanner": "scanner-primary", "fingerprint": "71db224a42dd50d8", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/intelligence/ml_analytics.py:157"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-433847b2d51126eb", "level": "note", "message": {"text": "Possibly dead Python function: generate_ml_performance_report"}, "properties": {"repobilityId": "fab39d0aef08740c", "scanner": "scanner-primary", "fingerprint": "433847b2d51126eb", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/intelligence/ml_analytics.py:208"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-ee5253d29bfc0305", "level": "note", "message": {"text": "Possibly dead Python function: test_analytics"}, "properties": {"repobilityId": "be8c3b9e40df24e2", "scanner": "scanner-primary", "fingerprint": "ee5253d29bfc0305", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/intelligence/ml_analytics.py:213"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-4b23028869882dcc", "level": "note", "message": {"text": "Possibly dead Python function: all_zone_pincodes"}, "properties": {"repobilityId": "c50658e9f2d636fd", "scanner": "scanner-primary", "fingerprint": "4b23028869882dcc", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/builder/zone_mapper.py:240"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-b1fa56c0d5323993", "level": "note", "message": {"text": "Possibly dead Python function: group_by_canonical_zone"}, "properties": {"repobilityId": "0241defef5b25888", "scanner": "scanner-primary", "fingerprint": "b1fa56c0d5323993", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/builder/zone_mapper.py:244"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-55ef5eb3e596fd86", "level": "note", "message": {"text": "Possibly dead Python function: extract_category_text"}, "properties": {"repobilityId": "3164d18feefa513c", "scanner": "scanner-primary", "fingerprint": "55ef5eb3e596fd86", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/knowledge/section_segmenter.py:253"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-32859c3709b27d3f", "level": "note", "message": {"text": "Possibly dead Python function: is_dangerous_section"}, "properties": {"repobilityId": "c2ba8576c5285786", "scanner": "scanner-primary", "fingerprint": "32859c3709b27d3f", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/knowledge/section_segmenter.py:358"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-927ae546b87aac74", "level": "note", "message": {"text": "Possibly dead Python function: lookup_state"}, "properties": {"repobilityId": "aba4e0e4087186c2", "scanner": "scanner-primary", "fingerprint": "927ae546b87aac74", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/knowledge/geo_validator.py:97"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-65820f54d03fb365", "level": "note", "message": {"text": "Possibly dead Python function: is_known"}, "properties": {"repobilityId": "72af151f32bc0eaf", "scanner": "scanner-primary", "fingerprint": "65820f54d03fb365", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/knowledge/geo_validator.py:101"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-39bf77fca5841323", "level": "note", "message": {"text": "Possibly dead Python function: validate_zone_pincodes"}, "properties": {"repobilityId": "135a2ecd36cb8567", "scanner": "scanner-primary", "fingerprint": "39bf77fca5841323", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/knowledge/geo_validator.py:182"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-7927fe1c66d95327", "level": "note", "message": {"text": "Possibly dead Python function: infer_canonical_zones"}, "properties": {"repobilityId": "6a5311887e36cf1e", "scanner": "scanner-primary", "fingerprint": "7927fe1c66d95327", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/knowledge/geo_validator.py:323"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-aefa7c0e0adc892b", "level": "note", "message": {"text": "Possibly dead Python function: resolve_flat_pincodes"}, "properties": {"repobilityId": "a1003396c7921512", "scanner": "scanner-primary", "fingerprint": "aefa7c0e0adc892b", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/knowledge/zone_resolver.py:114"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-8faa7775fb2bd8e5", "level": "note", "message": {"text": "Possibly dead Python function: validate_zone_matrix"}, "properties": {"repobilityId": "544c094abeeabd23", "scanner": "scanner-primary", "fingerprint": "8faa7775fb2bd8e5", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/knowledge/zone_resolver.py:148"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-583075660ceb6c45", "level": "note", "message": {"text": "Possibly dead Python function: fill_symmetric_rates"}, "properties": {"repobilityId": "e1c064cd5d95d4bd", "scanner": "scanner-primary", "fingerprint": "583075660ceb6c45", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/knowledge/zone_resolver.py:266"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d63da3583b14afc0", "level": "warning", "message": {"text": "Dockerfile runs as root: Dockerfile"}, "properties": {"repobilityId": "a2ed1bd120e507db", "scanner": "scanner-primary", "fingerprint": "d63da3583b14afc0", "layer": "hardware", "severity": "medium", "confidence": 1.0, "tags": ["security", "container"]}}, {"ruleId": "scanner-e066691601852931", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: python:3.11-slim"}, "properties": {"repobilityId": "f391052c9bfd7e8b", "scanner": "scanner-primary", "fingerprint": "e066691601852931", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-aa5acaa49eb8315b", "level": "note", "message": {"text": "Containers defined but no K8s/orchestration manifest found"}, "properties": {"repobilityId": "b230ea9b68736081", "scanner": "scanner-primary", "fingerprint": "aa5acaa49eb8315b", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["coverage", "deployment"]}}, {"ruleId": "scanner-9710c8d059e53154", "level": "none", "message": {"text": "No frontend routes/components detected"}, "properties": {"repobilityId": "44ca61485762e494", "scanner": "scanner-primary", "fingerprint": "9710c8d059e53154", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["coverage"]}}, {"ruleId": "scanner-62ad1d7d2c914675", "level": "error", "message": {"text": "Insecure pattern 'exec_used' in src/knowledge/smart_matcher.py:80"}, "properties": {"repobilityId": "8a1500e411207696", "scanner": "scanner-primary", "fingerprint": "62ad1d7d2c914675", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "exec_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/knowledge/smart_matcher.py"}, "region": {"startLine": 80}}}]}, {"ruleId": "scanner-6372cebde0220094", "level": "warning", "message": {"text": "No auth library detected"}, "properties": {"repobilityId": "a5b6035a5bbf8054", "scanner": "scanner-primary", "fingerprint": "6372cebde0220094", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["coverage", "auth"]}}, {"ruleId": "scanner-4601e3ad3bb28677", "level": "warning", "message": {"text": "No CI/CD pipelines detected"}, "properties": {"repobilityId": "c3ee439bce2bc51e", "scanner": "scanner-primary", "fingerprint": "4601e3ad3bb28677", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["coverage"]}}, {"ruleId": "scanner-2b0ccd225b5b5a59", "level": "note", "message": {"text": "Very large file: src/parsers/pdf_parser.py (1378 lines)"}, "properties": {"repobilityId": "8f2fe5a48f51e324", "scanner": "scanner-primary", "fingerprint": "2b0ccd225b5b5a59", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-8afcce203724acbe", "level": "note", "message": {"text": "Very large file: src/parsers/excel_parser.py (3007 lines)"}, "properties": {"repobilityId": "444032760c4dcaba", "scanner": "scanner-primary", "fingerprint": "8afcce203724acbe", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-abc9a72daa9133a9", "level": "note", "message": {"text": "Very large file: src/parsers/oicr_engine.py (1780 lines)"}, "properties": {"repobilityId": "96a080fd1104e3b2", "scanner": "scanner-primary", "fingerprint": "abc9a72daa9133a9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-234a3f42b01e7869", "level": "note", "message": {"text": "Very large file: src/web/app.py (1851 lines)"}, "properties": {"repobilityId": "57747210d9633cb0", "scanner": "scanner-primary", "fingerprint": "234a3f42b01e7869", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-6893a6c8b0861585", "level": "warning", "message": {"text": "Very low test-to-source ratio"}, "properties": {"repobilityId": "54a7de3f06314bf0", "scanner": "scanner-primary", "fingerprint": "6893a6c8b0861585", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["tests", "coverage"]}}, {"ruleId": "scanner-141b30a41e03817b", "level": "note", "message": {"text": "No license file detected"}, "properties": {"repobilityId": "0bc729643b423b29", "scanner": "scanner-primary", "fingerprint": "141b30a41e03817b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["license", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-faccb9061e9b52a0", "level": "note", "message": {"text": "No README detected"}, "properties": {"repobilityId": "a70e3e06dcf5964d", "scanner": "scanner-primary", "fingerprint": "faccb9061e9b52a0", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["docs", "readme", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "7749bc5181186819", "scanner": "scanner-primary", "fingerprint": "3ab5d313dda8e5f9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["debug", "cleanup", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-2d0c7b7ab8f8aacf", "level": "warning", "message": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "properties": {"repobilityId": "3b9486bcd84f32dd", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-b9088664ace7f748", "level": "warning", "message": {"text": "Composite production-readiness gap"}, "properties": {"repobilityId": "a48f9a71ee6b4f91", "scanner": "scanner-primary", "fingerprint": "b9088664ace7f748", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["production-readiness", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-ea8f3013f588db25", "level": "note", "message": {"text": "Shallow git history limits provenance confidence"}, "properties": {"repobilityId": "6745566c5845ef2a", "scanner": "scanner-primary", "fingerprint": "ea8f3013f588db25", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-8424db9c75e04ba4", "level": "none", "message": {"text": "Very short observed git history"}, "properties": {"repobilityId": "9a7380dfefe4320a", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-ca5d991c3ed3f73f", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 setup.py:18"}, "properties": {"repobilityId": "4042686c74a15eec", "scanner": "scanner-primary", "fingerprint": "ca5d991c3ed3f73f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b41b8a43307cd430", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/fc4_schema.py:202"}, "properties": {"repobilityId": "8fa19b3be3b01b1f", "scanner": "scanner-primary", "fingerprint": "b41b8a43307cd430", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-62a30850f8f900b3", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/main.py:254"}, "properties": {"repobilityId": "da1bbc89ae0f86c1", "scanner": "scanner-primary", "fingerprint": "62a30850f8f900b3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fb2b6b4f7631afdb", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/parsers/pdf_parser.py:698"}, "properties": {"repobilityId": "806e39a6db0a9805", "scanner": "scanner-primary", "fingerprint": "fb2b6b4f7631afdb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1ec81a0504a1e1f4", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/parsers/excel_parser.py:827"}, "properties": {"repobilityId": "3af03f232928a195", "scanner": "scanner-primary", "fingerprint": "1ec81a0504a1e1f4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2bfad36522306127", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/parsers/oicr_engine.py:189"}, "properties": {"repobilityId": "c92863dc6d7f473d", "scanner": "scanner-primary", "fingerprint": "2bfad36522306127", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d85a924b094afc87", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/intelligence/ml_enhancer.py:284"}, "properties": {"repobilityId": "529ceecc6fe52bc4", "scanner": "scanner-primary", "fingerprint": "d85a924b094afc87", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cbc874f7977f5965", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 src/web/app.py:653"}, "properties": {"repobilityId": "13550bab8cb3d61e", "scanner": "scanner-primary", "fingerprint": "cbc874f7977f5965", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-de403301b5b1fb1c", "level": "note", "message": {"text": "Legacy-named symbol `migration_v2` in src/builder/fc4_encoder.py:912"}, "properties": {"repobilityId": "76bd83c25705ebb2", "scanner": "scanner-primary", "fingerprint": "de403301b5b1fb1c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-bd0cd63c8b1a70aa", "level": "none", "message": {"text": "Commented-code block (13 lines) in src/builder/fc4_encoder.py:419"}, "properties": {"repobilityId": "996ebc0779f179ef", "scanner": "scanner-primary", "fingerprint": "bd0cd63c8b1a70aa", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ba1a2d44d3e657dd", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/builder/zone_mapper.py:356"}, "properties": {"repobilityId": "a21f10a9a29b93ae", "scanner": "scanner-primary", "fingerprint": "ba1a2d44d3e657dd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1981158b2d9ee4d5", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/knowledge/smart_matcher.py:120"}, "properties": {"repobilityId": "2b72bf377ea623a4", "scanner": "scanner-primary", "fingerprint": "1981158b2d9ee4d5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "56bdfd8282384675", "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": "18d330d2aeb164f1", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-fee9379c6dc1d98c", "level": "error", "message": {"text": "FastAPI POST `create_transporter` without auth dependency \u2014 src/web/app.py:421"}, "properties": {"repobilityId": "d43e5f5cedefeaad", "scanner": "scanner-primary", "fingerprint": "fee9379c6dc1d98c", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/web/app.py"}, "region": {"startLine": 421}}}]}, {"ruleId": "scanner-c9212a6c0310aee0", "level": "error", "message": {"text": "FastAPI POST `set_transporter_meta` without auth dependency \u2014 src/web/app.py:454"}, "properties": {"repobilityId": "3919ac4df450a229", "scanner": "scanner-primary", "fingerprint": "c9212a6c0310aee0", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/web/app.py"}, "region": {"startLine": 454}}}]}, {"ruleId": "scanner-1798fcadc30d7fd7", "level": "error", "message": {"text": "FastAPI POST `upload_files` without auth dependency \u2014 src/web/app.py:514"}, "properties": {"repobilityId": "c22a082570401468", "scanner": "scanner-primary", "fingerprint": "1798fcadc30d7fd7", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/web/app.py"}, "region": {"startLine": 514}}}]}, {"ruleId": "scanner-ecb697cc57139e4b", "level": "error", "message": {"text": "FastAPI DELETE `delete_file` without auth dependency \u2014 src/web/app.py:552"}, "properties": {"repobilityId": "e35d01ab0c36274f", "scanner": "scanner-primary", "fingerprint": "ecb697cc57139e4b", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/web/app.py"}, "region": {"startLine": 552}}}]}, {"ruleId": "scanner-383d9c8787064ad9", "level": "error", "message": {"text": "FastAPI POST `move_file` without auth dependency \u2014 src/web/app.py:566"}, "properties": {"repobilityId": "a000a2ce54f539db", "scanner": "scanner-primary", "fingerprint": "383d9c8787064ad9", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/web/app.py"}, "region": {"startLine": 566}}}]}, {"ruleId": "scanner-d060f139f7221b05", "level": "error", "message": {"text": "FastAPI PATCH `patch_utsf_field` without auth dependency \u2014 src/web/app.py:926"}, "properties": {"repobilityId": "694e4d715e798474", "scanner": "scanner-primary", "fingerprint": "d060f139f7221b05", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/web/app.py"}, "region": {"startLine": 926}}}]}, {"ruleId": "scanner-ee5ee3b6ca360b32", "level": "error", "message": {"text": "FastAPI DELETE `delete_output` without auth dependency \u2014 src/web/app.py:998"}, "properties": {"repobilityId": "ed050d9d460f1bbc", "scanner": "scanner-primary", "fingerprint": "ee5ee3b6ca360b32", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/web/app.py"}, "region": {"startLine": 998}}}]}, {"ruleId": "scanner-78adfce73ceddd63", "level": "error", "message": {"text": "FastAPI DELETE `delete_transporter` without auth dependency \u2014 src/web/app.py:1017"}, "properties": {"repobilityId": "2b1af0ad001bf7da", "scanner": "scanner-primary", "fingerprint": "78adfce73ceddd63", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/web/app.py"}, "region": {"startLine": 1017}}}]}, {"ruleId": "scanner-5331e536a8220727", "level": "error", "message": {"text": "FastAPI POST `migrate_upload` without auth dependency \u2014 src/web/app.py:1047"}, "properties": {"repobilityId": "99d15607a1d628fd", "scanner": "scanner-primary", "fingerprint": "5331e536a8220727", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/web/app.py"}, "region": {"startLine": 1047}}}]}, {"ruleId": "scanner-12dd058a570b6417", "level": "error", "message": {"text": "FastAPI POST `api_learn` without auth dependency \u2014 src/web/app.py:1075"}, "properties": {"repobilityId": "c2f6c46b241ecf6f", "scanner": "scanner-primary", "fingerprint": "12dd058a570b6417", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/web/app.py"}, "region": {"startLine": 1075}}}]}, {"ruleId": "scanner-e2c08f80fe599d04", "level": "error", "message": {"text": "FastAPI POST `api_extract_prices` without auth dependency \u2014 src/web/app.py:1319"}, "properties": {"repobilityId": "16a2d0c9b841deaf", "scanner": "scanner-primary", "fingerprint": "e2c08f80fe599d04", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/web/app.py"}, "region": {"startLine": 1319}}}]}, {"ruleId": "scanner-41e6cd5a89049ed4", "level": "error", "message": {"text": "FastAPI POST `api_generate_bulk` without auth dependency \u2014 src/web/app.py:1526"}, "properties": {"repobilityId": "a16309187183c506", "scanner": "scanner-primary", "fingerprint": "41e6cd5a89049ed4", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/web/app.py"}, "region": {"startLine": 1526}}}]}, {"ruleId": "scanner-f37a640af4be887f", "level": "error", "message": {"text": "FastAPI POST `api_classify_files` without auth dependency \u2014 src/web/app.py:1637"}, "properties": {"repobilityId": "30fbc55b9fae07f9", "scanner": "scanner-primary", "fingerprint": "f37a640af4be887f", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/web/app.py"}, "region": {"startLine": 1637}}}]}, {"ruleId": "scanner-6df50817e9d1a302", "level": "error", "message": {"text": "FastAPI POST `import_input_data` without auth dependency \u2014 src/web/app.py:1738"}, "properties": {"repobilityId": "f4f849170648a056", "scanner": "scanner-primary", "fingerprint": "6df50817e9d1a302", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/web/app.py"}, "region": {"startLine": 1738}}}]}, {"ruleId": "scanner-5baa8971ebe192a1", "level": "note", "message": {"text": "Unused endpoint: GET /"}, "properties": {"repobilityId": "fbd8e5d9363bb40d", "scanner": "scanner-primary", "fingerprint": "5baa8971ebe192a1", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-03e196e214b2a675", "level": "note", "message": {"text": "Unused endpoint: POST /transporter/create"}, "properties": {"repobilityId": "5cca0f63465d5c50", "scanner": "scanner-primary", "fingerprint": "03e196e214b2a675", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-17be575bb4b4cf64", "level": "note", "message": {"text": "Unused endpoint: POST /api/transporter/<name>/set-meta"}, "properties": {"repobilityId": "cd8cc16baaae6008", "scanner": "scanner-primary", "fingerprint": "17be575bb4b4cf64", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-c5bd96e4d236d90b", "level": "note", "message": {"text": "Unused endpoint: GET /transporter/<name>"}, "properties": {"repobilityId": "a71a3b88cd037623", "scanner": "scanner-primary", "fingerprint": "c5bd96e4d236d90b", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-b649bd6cc5a351f3", "level": "note", "message": {"text": "Unused endpoint: POST /transporter/<name>/upload"}, "properties": {"repobilityId": "0c804fe6bfb32184", "scanner": "scanner-primary", "fingerprint": "b649bd6cc5a351f3", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-ed7e2be211fc13d9", "level": "note", "message": {"text": "Unused endpoint: DELETE /transporter/<name>/file"}, "properties": {"repobilityId": "3bb8f18c592a5c5b", "scanner": "scanner-primary", "fingerprint": "ed7e2be211fc13d9", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-7ebfe5ae2f75fb8a", "level": "note", "message": {"text": "Unused endpoint: POST /transporter/<name>/move-file"}, "properties": {"repobilityId": "939443ed9bb1bd7b", "scanner": "scanner-primary", "fingerprint": "7ebfe5ae2f75fb8a", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-51bc99531ac85cc7", "level": "note", "message": {"text": "Unused endpoint: GET /transporter/<name>/generate"}, "properties": {"repobilityId": "ceb1b3e10d61afff", "scanner": "scanner-primary", "fingerprint": "51bc99531ac85cc7", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-d2fe809c27ec6b37", "level": "note", "message": {"text": "Unused endpoint: GET /output/<name>"}, "properties": {"repobilityId": "ed74712b12112f09", "scanner": "scanner-primary", "fingerprint": "d2fe809c27ec6b37", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-07b16a97221cc225", "level": "note", "message": {"text": "Unused endpoint: GET /output/<name>/download"}, "properties": {"repobilityId": "f840b96dbf107140", "scanner": "scanner-primary", "fingerprint": "07b16a97221cc225", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-80b98fda0fb13af1", "level": "note", "message": {"text": "Unused endpoint: GET /api/output/<name>/needs-manual-input"}, "properties": {"repobilityId": "1949b95f51e62387", "scanner": "scanner-primary", "fingerprint": "80b98fda0fb13af1", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-1a0835a91c2fd735", "level": "note", "message": {"text": "Unused endpoint: GET /api/output/<name>/review"}, "properties": {"repobilityId": "cb8305c07632a56a", "scanner": "scanner-primary", "fingerprint": "1a0835a91c2fd735", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-76c2c2d5bf560d88", "level": "note", "message": {"text": "Unused endpoint: PATCH /api/output/<name>/field"}, "properties": {"repobilityId": "56ef066cd3d31392", "scanner": "scanner-primary", "fingerprint": "76c2c2d5bf560d88", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-31648f834fd78ade", "level": "note", "message": {"text": "Unused endpoint: DELETE /output/<name>"}, "properties": {"repobilityId": "5e15f354210c2e8c", "scanner": "scanner-primary", "fingerprint": "31648f834fd78ade", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-20814c448f59b12f", "level": "note", "message": {"text": "Unused endpoint: DELETE /transporter/<name>"}, "properties": {"repobilityId": "883b07a935ae0bac", "scanner": "scanner-primary", "fingerprint": "20814c448f59b12f", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-e357ab37bb466af6", "level": "note", "message": {"text": "Unused endpoint: GET /migrate"}, "properties": {"repobilityId": "fe8bc90f0f0669dc", "scanner": "scanner-primary", "fingerprint": "e357ab37bb466af6", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-5c43662dce498972", "level": "note", "message": {"text": "Unused endpoint: POST /migrate"}, "properties": {"repobilityId": "592408f353c1acaa", "scanner": "scanner-primary", "fingerprint": "5c43662dce498972", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-f9c4fe0f5381e2a7", "level": "note", "message": {"text": "Unused endpoint: POST /api/learn"}, "properties": {"repobilityId": "63599546d663b7b8", "scanner": "scanner-primary", "fingerprint": "f9c4fe0f5381e2a7", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-3c9b273773ee3513", "level": "note", "message": {"text": "Unused endpoint: GET /api/learn-stats"}, "properties": {"repobilityId": "becb3dc25334739e", "scanner": "scanner-primary", "fingerprint": "3c9b273773ee3513", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-18a4887e7bea6b36", "level": "note", "message": {"text": "Unused endpoint: GET /compare"}, "properties": {"repobilityId": "7e2bd45b647975cb", "scanner": "scanner-primary", "fingerprint": "18a4887e7bea6b36", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-36aa9f8e622a0740", "level": "note", "message": {"text": "Unused endpoint: GET /api/compare"}, "properties": {"repobilityId": "fdd8c56aed2b7e57", "scanner": "scanner-primary", "fingerprint": "36aa9f8e622a0740", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-cfce95b9961b8bb7", "level": "note", "message": {"text": "Unused endpoint: POST /api/extract-prices"}, "properties": {"repobilityId": "4ccb7002293c9b2e", "scanner": "scanner-primary", "fingerprint": "cfce95b9961b8bb7", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-f27c2800dcf83301", "level": "note", "message": {"text": "Unused endpoint: POST /api/generate-bulk"}, "properties": {"repobilityId": "743099f9e9de828e", "scanner": "scanner-primary", "fingerprint": "f27c2800dcf83301", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-db0d74ca592c1a54", "level": "note", "message": {"text": "Unused endpoint: POST /api/classify-files"}, "properties": {"repobilityId": "b012469a9bcfec12", "scanner": "scanner-primary", "fingerprint": "db0d74ca592c1a54", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-963710f42a2c8219", "level": "note", "message": {"text": "Unused endpoint: GET /api/status"}, "properties": {"repobilityId": "362bde0a988521ee", "scanner": "scanner-primary", "fingerprint": "963710f42a2c8219", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-28e459b82f30bccd", "level": "note", "message": {"text": "Unused endpoint: GET /input-data"}, "properties": {"repobilityId": "b69bd2840b5aaabe", "scanner": "scanner-primary", "fingerprint": "28e459b82f30bccd", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-288179b117c89f49", "level": "note", "message": {"text": "Unused endpoint: POST /input-data/import/<folder_name>"}, "properties": {"repobilityId": "01e25ec489d1ab0d", "scanner": "scanner-primary", "fingerprint": "288179b117c89f49", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}]}]}