{"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-feb0278b1c3312fd", "name": "Possibly dead Python function: render_docx", "shortDescription": {"text": "Possibly dead Python function: render_docx"}, "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-7a5af718b361f734", "name": "Possibly dead Python function: render_pdf", "shortDescription": {"text": "Possibly dead Python function: render_pdf"}, "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-a2a08586a935c2de", "name": "Possibly dead Python function: run_single_scraper", "shortDescription": {"text": "Possibly dead Python function: run_single_scraper"}, "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-68c77deb55d7fa9f", "name": "Possibly dead Python function: log_pro_usage", "shortDescription": {"text": "Possibly dead Python function: log_pro_usage"}, "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-41cfbe75f4a4339a", "name": "Possibly dead Python function: validate_license", "shortDescription": {"text": "Possibly dead Python function: validate_license"}, "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-bd7e94ad051cef70", "name": "Possibly dead Python function: increment_usage", "shortDescription": {"text": "Possibly dead Python function: increment_usage"}, "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-4da3018ba3759132", "name": "Possibly dead Python function: create_portal_session", "shortDescription": {"text": "Possibly dead Python function: create_portal_session"}, "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-a40b9246e0fc8c28", "name": "Possibly dead Python function: create_checkout_session", "shortDescription": {"text": "Possibly dead Python function: create_checkout_session"}, "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-a838397907c54f0a", "name": "Possibly dead Python function: handle_webhook", "shortDescription": {"text": "Possibly dead Python function: handle_webhook"}, "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-66d5c15fa096b7df", "name": "Possibly dead Python function: verify_reference_pro", "shortDescription": {"text": "Possibly dead Python function: verify_reference_pro"}, "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-651a81880e01cfd3", "name": "Possibly dead Python function: parse_legal_statement", "shortDescription": {"text": "Possibly dead Python function: parse_legal_statement"}, "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-24de52945b2c694f", "name": "Possibly dead Python function: score_supporting_results", "shortDescription": {"text": "Possibly dead Python function: score_supporting_results"}, "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-e0df40b6768739e3", "name": "Possibly dead Python function: load_decisions", "shortDescription": {"text": "Possibly dead Python function: load_decisions"}, "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-29395bc867003a76", "name": "Possibly dead Python function: mint_cli_ch_from_row", "shortDescription": {"text": "Possibly dead Python function: mint_cli_ch_from_row"}, "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-02303243b3044c12", "name": "Possibly dead Python function: mint_ecli_from_row", "shortDescription": {"text": "Possibly dead Python function: mint_ecli_from_row"}, "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-6722dc9a43076472", "name": "Possibly dead Python function: check_pipeline_stale", "shortDescription": {"text": "Possibly dead Python function: check_pipeline_stale"}, "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-1d33afe704cc77ea", "name": "Possibly dead Python function: check_quick_publish_stale", "shortDescription": {"text": "Possibly dead Python function: check_quick_publish_stale"}, "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-8503ca1c7711f529", "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-eef9fc8d48ec9dc8", "name": "Possibly dead Python function: make_pow_cookies", "shortDescription": {"text": "Possibly dead Python function: make_pow_cookies"}, "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-0f5c866516029204", "name": "Possibly dead Python function: hex_root", "shortDescription": {"text": "Possibly dead Python function: hex_root"}, "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-9f75e6f8881863dc", "name": "Possibly dead Python function: step_1_ingest", "shortDescription": {"text": "Possibly dead Python function: step_1_ingest"}, "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-e892b6d7afe34bd0", "name": "Possibly dead Python function: step_2_build_fts5", "shortDescription": {"text": "Possibly dead Python function: step_2_build_fts5"}, "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-5b3e118e791fa2b4", "name": "Possibly dead Python function: step_2b_quality_report", "shortDescription": {"text": "Possibly dead Python function: step_2b_quality_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-405d4eb7412a3c7e", "name": "Possibly dead Python function: step_2c_build_reference_graph", "shortDescription": {"text": "Possibly dead Python function: step_2c_build_reference_graph"}, "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-7e05b4710955dbef", "name": "Possibly dead Python function: step_2d_enrich_quality", "shortDescription": {"text": "Possibly dead Python function: step_2d_enrich_quality"}, "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-36bd91a27605ee5e", "name": "Possibly dead Python function: step_2e_build_anwaltsrecht_tags", "shortDescription": {"text": "Possibly dead Python function: step_2e_build_anwaltsrecht_tags"}, "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-cd4f6fed8035816a", "name": "Possibly dead Python function: step_2g_build_decision_structure", "shortDescription": {"text": "Possibly dead Python function: step_2g_build_decision_structure"}, "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-5c5f5bbcc27da8ea", "name": "Possibly dead Python function: step_3_export_parquet", "shortDescription": {"text": "Possibly dead Python function: step_3_export_parquet"}, "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-54cacfa83f6ec120", "name": "Insecure pattern 'weak_hash' in README.md:1021", "shortDescription": {"text": "Insecure pattern 'weak_hash' in README.md:1021"}, "fullDescription": {"text": "Found a known-risky pattern (weak_hash). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e7b16e18cb7a99cb", "name": "Insecure pattern 'tls_verify_false' in base_scraper.py:292", "shortDescription": {"text": "Insecure pattern 'tls_verify_false' in base_scraper.py:292"}, "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-62a3478d5c34100e", "name": "Insecure pattern 'direct_innerhtml_assignment' in mcp_server.py:19178", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in mcp_server.py:19178"}, "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-6fecdc8083e682f9", "name": "Insecure pattern 'cors_wildcard' in mcp_server.py:19012", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in mcp_server.py:19012"}, "fullDescription": {"text": "Found a known-risky pattern (cors_wildcard). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-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-e5cd69f038dde204", "name": "Very large file: generate_stats.py (1563 lines)", "shortDescription": {"text": "Very large file: generate_stats.py (1563 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-85537581e4390136", "name": "Very large file: publish.py (1870 lines)", "shortDescription": {"text": "Very large file: publish.py (1870 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-bbfdccaa85a2e439", "name": "Very large file: seo_pages.py (1496 lines)", "shortDescription": {"text": "Very large file: seo_pages.py (1496 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-c3b28b6a0d538549", "name": "Very large file: build_fts5.py (2109 lines)", "shortDescription": {"text": "Very large file: build_fts5.py (2109 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-de6d6b153a160780", "name": "Very large file: mcp_server.py (22353 lines)", "shortDescription": {"text": "Very large file: mcp_server.py (22353 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 117 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-d27871d4a4afc4aa", "name": "Commented-code block (13 lines) in exports.py:39", "shortDescription": {"text": "Commented-code block (13 lines) in exports.py:39"}, "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-6acf9c9e0528878a", "name": "Commented-code block (6 lines) in generate_stats.py:649", "shortDescription": {"text": "Commented-code block (6 lines) in generate_stats.py:649"}, "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-53b92c4777911569", "name": "Commented-code block (9 lines) in run_all_scrapers.py:79", "shortDescription": {"text": "Commented-code block (9 lines) in run_all_scrapers.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-7370d33d620b7802", "name": "Commented-code block (7 lines) in publish_dag.py:206", "shortDescription": {"text": "Commented-code block (7 lines) in publish_dag.py:206"}, "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-5c1da7000d948d97", "name": "Commented-code block (6 lines) in export_parquet.py:284", "shortDescription": {"text": "Commented-code block (6 lines) in export_parquet.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-982aa76b51937b82", "name": "Stub function `fetch_decision` (body is just `pass`/`return`) \u2014 test_runtime_completeness_guards.py:47", "shortDescription": {"text": "Stub function `fetch_decision` (body is just `pass`/`return`) \u2014 test_runtime_completeness_guards.py:47"}, "fullDescription": {"text": "Likely an AI scaffold that was never filled in. Remove or implement."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3faa24cac0f02b26", "name": "Commented-code block (6 lines) in health_metrics.py:32", "shortDescription": {"text": "Commented-code block (6 lines) in health_metrics.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-26659cda826aa9d6", "name": "Commented-code block (6 lines) in models.py:290", "shortDescription": {"text": "Commented-code block (6 lines) in models.py:290"}, "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-1be70df14999a25e", "name": "Stub function `mark_scraped` (body is just `pass`/`return`) \u2014 test_run_scraper_coverage_snapshot.py:20", "shortDescription": {"text": "Stub function `mark_scraped` (body is just `pass`/`return`) \u2014 test_run_scraper_coverage_snapshot.py:20"}, "fullDescription": {"text": "Likely an AI scaffold that was never filled in. Remove or implement."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-74cf1d1ff6c3d434", "name": "Commented-code block (6 lines) in run_scraper.py:36", "shortDescription": {"text": "Commented-code block (6 lines) in run_scraper.py:36"}, "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-4d619864c9aa71bf", "name": "Network/subprocess call without timeout or try/except \u2014 run_scraper.py:820", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 run_scraper.py:820"}, "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-4f52bbb44d8f71d1", "name": "Legacy-named symbol `d_old` in test_reference_graph_resolution.py:23", "shortDescription": {"text": "Legacy-named symbol `d_old` in test_reference_graph_resolution.py:23"}, "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-e294bcbeb127aeed", "name": "Commented-code block (7 lines) in publish.py:163", "shortDescription": {"text": "Commented-code block (7 lines) in publish.py:163"}, "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-a8914d7642e2b86b", "name": "Network/subprocess call without timeout or try/except \u2014 publish.py:950", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 publish.py:950"}, "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-5a023ec101a3db25", "name": "Commented-code block (5 lines) in seo_pages.py:29", "shortDescription": {"text": "Commented-code block (5 lines) in seo_pages.py:29"}, "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-e3ddd57917660547", "name": "Commented-code block (5 lines) in build_fts5.py:962", "shortDescription": {"text": "Commented-code block (5 lines) in build_fts5.py:962"}, "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-133881bd133989ee", "name": "Legacy-named symbol `bger_old` in mcp_server.py:10519", "shortDescription": {"text": "Legacy-named symbol `bger_old` in mcp_server.py:10519"}, "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-883c3b42b28261c3", "name": "Commented-code block (5 lines) in mcp_server.py:199", "shortDescription": {"text": "Commented-code block (5 lines) in mcp_server.py:199"}, "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-d1d14d9555aab311", "name": "Commented-code block (5 lines) in incapsula_bypass.py:235", "shortDescription": {"text": "Commented-code block (5 lines) in incapsula_bypass.py:235"}, "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: `BUILD_FTS5_DIRECT_FIRST`, `CASELAW_DB`, `DEV_DASHBOARD_TOKEN`, `HF_TOKEN`, `LEXFIND_ENABLED`, `LEXFIND_LOOKUP_TIMEOUT`, `LEXFIND_SEARCH_TIMEOUT`, `LLM_EXPANSION_ENABLED` + 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:\ntest_search_rerank_signals.py:test_graph_signal_map_falls_back_to_legacy_target_decision_id, test_search_rerank_signals.py:test_graph_signal_map_preserves_fractional_confidence_weights\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:\ntest_run_scraper_coverage_snapshot.py:count, test_run_scraper_coverage_snapshot.py:count, test_run_scraper_coverage_snapshot.py:count\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:\nmcp_server.py:api_export_docx, mcp_server.py:api_export_pdf, mcp_server.py:api_export_bibtex, mcp_server.py:api_export_ris\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-fe5101bdebee08a1", "name": "FastAPI POST `mcp_invoke` without auth dependency \u2014 fts5_server.py:309", "shortDescription": {"text": "FastAPI POST `mcp_invoke` without auth dependency \u2014 fts5_server.py:309"}, "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}}]}}, "automationDetails": {"id": "repobility/26929"}, "properties": {"repository": "jonashertner/caselaw-repo-1", "repoUrl": "https://github.com/jonashertner/caselaw-repo-1", "branch": "main"}, "results": [{"ruleId": "scanner-feb0278b1c3312fd", "level": "note", "message": {"text": "Possibly dead Python function: render_docx"}, "properties": {"repobilityId": "63bf917b1f7a9ac9", "scanner": "scanner-primary", "fingerprint": "feb0278b1c3312fd", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "exports.py:245"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-7a5af718b361f734", "level": "note", "message": {"text": "Possibly dead Python function: render_pdf"}, "properties": {"repobilityId": "4db4e7ed7464e8dc", "scanner": "scanner-primary", "fingerprint": "7a5af718b361f734", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "exports.py:402"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a2a08586a935c2de", "level": "note", "message": {"text": "Possibly dead Python function: run_single_scraper"}, "properties": {"repobilityId": "46f6cbf906c71cc0", "scanner": "scanner-primary", "fingerprint": "a2a08586a935c2de", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "run_all_scrapers.py:149"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-68c77deb55d7fa9f", "level": "note", "message": {"text": "Possibly dead Python function: log_pro_usage"}, "properties": {"repobilityId": "cdaed9acc7485a7b", "scanner": "scanner-primary", "fingerprint": "68c77deb55d7fa9f", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "stripe_billing.py:99"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-41cfbe75f4a4339a", "level": "note", "message": {"text": "Possibly dead Python function: validate_license"}, "properties": {"repobilityId": "c7bc3eec1c142999", "scanner": "scanner-primary", "fingerprint": "41cfbe75f4a4339a", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "stripe_billing.py:177"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-bd7e94ad051cef70", "level": "note", "message": {"text": "Possibly dead Python function: increment_usage"}, "properties": {"repobilityId": "c10b32539727b2d8", "scanner": "scanner-primary", "fingerprint": "bd7e94ad051cef70", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "stripe_billing.py:203"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-4da3018ba3759132", "level": "note", "message": {"text": "Possibly dead Python function: create_portal_session"}, "properties": {"repobilityId": "82549133a357df38", "scanner": "scanner-primary", "fingerprint": "4da3018ba3759132", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "stripe_billing.py:294"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a40b9246e0fc8c28", "level": "note", "message": {"text": "Possibly dead Python function: create_checkout_session"}, "properties": {"repobilityId": "5ffda94b3770b580", "scanner": "scanner-primary", "fingerprint": "a40b9246e0fc8c28", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "stripe_billing.py:331"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a838397907c54f0a", "level": "note", "message": {"text": "Possibly dead Python function: handle_webhook"}, "properties": {"repobilityId": "f9590dbf798210af", "scanner": "scanner-primary", "fingerprint": "a838397907c54f0a", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "stripe_billing.py:386"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-66d5c15fa096b7df", "level": "note", "message": {"text": "Possibly dead Python function: verify_reference_pro"}, "properties": {"repobilityId": "7063f2147fd586f3", "scanner": "scanner-primary", "fingerprint": "66d5c15fa096b7df", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "stripe_billing.py:439"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-651a81880e01cfd3", "level": "note", "message": {"text": "Possibly dead Python function: parse_legal_statement"}, "properties": {"repobilityId": "9eb4c15949067c41", "scanner": "scanner-primary", "fingerprint": "651a81880e01cfd3", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "stripe_billing.py:537"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-24de52945b2c694f", "level": "note", "message": {"text": "Possibly dead Python function: score_supporting_results"}, "properties": {"repobilityId": "176dd98ab9207f7e", "scanner": "scanner-primary", "fingerprint": "24de52945b2c694f", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "stripe_billing.py:577"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e0df40b6768739e3", "level": "note", "message": {"text": "Possibly dead Python function: load_decisions"}, "properties": {"repobilityId": "5689290bd9de1b9d", "scanner": "scanner-primary", "fingerprint": "e0df40b6768739e3", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "export_parquet.py:128"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-29395bc867003a76", "level": "note", "message": {"text": "Possibly dead Python function: mint_cli_ch_from_row"}, "properties": {"repobilityId": "61e42910a94260b5", "scanner": "scanner-primary", "fingerprint": "29395bc867003a76", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "cli_ch.py:231"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-02303243b3044c12", "level": "note", "message": {"text": "Possibly dead Python function: mint_ecli_from_row"}, "properties": {"repobilityId": "76062d2dfce6616e", "scanner": "scanner-primary", "fingerprint": "02303243b3044c12", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "ecli.py:216"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-6722dc9a43076472", "level": "note", "message": {"text": "Possibly dead Python function: check_pipeline_stale"}, "properties": {"repobilityId": "30f53bbc92d6ac2e", "scanner": "scanner-primary", "fingerprint": "6722dc9a43076472", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "health_alerts.py:45"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-1d33afe704cc77ea", "level": "note", "message": {"text": "Possibly dead Python function: check_quick_publish_stale"}, "properties": {"repobilityId": "fe897c096b0ecca6", "scanner": "scanner-primary", "fingerprint": "1d33afe704cc77ea", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "health_alerts.py:74"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-8503ca1c7711f529", "level": "note", "message": {"text": "Possibly dead Python function: is_known"}, "properties": {"repobilityId": "72af151f32bc0eaf", "scanner": "scanner-primary", "fingerprint": "8503ca1c7711f529", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "base_scraper.py:113"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-eef9fc8d48ec9dc8", "level": "note", "message": {"text": "Possibly dead Python function: make_pow_cookies"}, "properties": {"repobilityId": "3157c05c214544b3", "scanner": "scanner-primary", "fingerprint": "eef9fc8d48ec9dc8", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "base_scraper.py:187"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-0f5c866516029204", "level": "note", "message": {"text": "Possibly dead Python function: hex_root"}, "properties": {"repobilityId": "5178b94976a0bf20", "scanner": "scanner-primary", "fingerprint": "0f5c866516029204", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "integrity.py:208"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-9f75e6f8881863dc", "level": "note", "message": {"text": "Possibly dead Python function: step_1_ingest"}, "properties": {"repobilityId": "67cf3b17259ac839", "scanner": "scanner-primary", "fingerprint": "9f75e6f8881863dc", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "publish.py:268"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e892b6d7afe34bd0", "level": "note", "message": {"text": "Possibly dead Python function: step_2_build_fts5"}, "properties": {"repobilityId": "bbbd41456d10d123", "scanner": "scanner-primary", "fingerprint": "e892b6d7afe34bd0", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "publish.py:368"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-5b3e118e791fa2b4", "level": "note", "message": {"text": "Possibly dead Python function: step_2b_quality_report"}, "properties": {"repobilityId": "4a12f1f0dc0a5f12", "scanner": "scanner-primary", "fingerprint": "5b3e118e791fa2b4", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "publish.py:436"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-405d4eb7412a3c7e", "level": "note", "message": {"text": "Possibly dead Python function: step_2c_build_reference_graph"}, "properties": {"repobilityId": "5d63cfdcc04fe299", "scanner": "scanner-primary", "fingerprint": "405d4eb7412a3c7e", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "publish.py:460"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-7e05b4710955dbef", "level": "note", "message": {"text": "Possibly dead Python function: step_2d_enrich_quality"}, "properties": {"repobilityId": "46da8b7d488e0062", "scanner": "scanner-primary", "fingerprint": "7e05b4710955dbef", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "publish.py:489"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-36bd91a27605ee5e", "level": "note", "message": {"text": "Possibly dead Python function: step_2e_build_anwaltsrecht_tags"}, "properties": {"repobilityId": "30fc602c5ffda3bf", "scanner": "scanner-primary", "fingerprint": "36bd91a27605ee5e", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "publish.py:513"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-cd4f6fed8035816a", "level": "note", "message": {"text": "Possibly dead Python function: step_2g_build_decision_structure"}, "properties": {"repobilityId": "2a19b48c9f898dcc", "scanner": "scanner-primary", "fingerprint": "cd4f6fed8035816a", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "publish.py:537"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-5c5f5bbcc27da8ea", "level": "note", "message": {"text": "Possibly dead Python function: step_3_export_parquet"}, "properties": {"repobilityId": "05a4722463466a09", "scanner": "scanner-primary", "fingerprint": "5c5f5bbcc27da8ea", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "publish.py:607"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-54cacfa83f6ec120", "level": "warning", "message": {"text": "Insecure pattern 'weak_hash' in README.md:1021"}, "properties": {"repobilityId": "5388562008acceec", "scanner": "scanner-primary", "fingerprint": "54cacfa83f6ec120", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "weak_hash"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "README.md"}, "region": {"startLine": 1021}}}]}, {"ruleId": "scanner-e7b16e18cb7a99cb", "level": "error", "message": {"text": "Insecure pattern 'tls_verify_false' in base_scraper.py:292"}, "properties": {"repobilityId": "a7dbdc9003d42163", "scanner": "scanner-primary", "fingerprint": "e7b16e18cb7a99cb", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "tls_verify_false"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "base_scraper.py"}, "region": {"startLine": 292}}}]}, {"ruleId": "scanner-62a3478d5c34100e", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in mcp_server.py:19178"}, "properties": {"repobilityId": "794129a820333204", "scanner": "scanner-primary", "fingerprint": "62a3478d5c34100e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "mcp_server.py"}, "region": {"startLine": 19178}}}]}, {"ruleId": "scanner-6fecdc8083e682f9", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in mcp_server.py:19012"}, "properties": {"repobilityId": "127e7a2bc54000c6", "scanner": "scanner-primary", "fingerprint": "6fecdc8083e682f9", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "mcp_server.py"}, "region": {"startLine": 19012}}}]}, {"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-e5cd69f038dde204", "level": "note", "message": {"text": "Very large file: generate_stats.py (1563 lines)"}, "properties": {"repobilityId": "256ababab02faeaf", "scanner": "scanner-primary", "fingerprint": "e5cd69f038dde204", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-85537581e4390136", "level": "note", "message": {"text": "Very large file: publish.py (1870 lines)"}, "properties": {"repobilityId": "73abfe7377f9a772", "scanner": "scanner-primary", "fingerprint": "85537581e4390136", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-bbfdccaa85a2e439", "level": "note", "message": {"text": "Very large file: seo_pages.py (1496 lines)"}, "properties": {"repobilityId": "6b4a3755a9921337", "scanner": "scanner-primary", "fingerprint": "bbfdccaa85a2e439", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-c3b28b6a0d538549", "level": "note", "message": {"text": "Very large file: build_fts5.py (2109 lines)"}, "properties": {"repobilityId": "6eed6ffb2e0a5478", "scanner": "scanner-primary", "fingerprint": "c3b28b6a0d538549", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-de6d6b153a160780", "level": "note", "message": {"text": "Very large file: mcp_server.py (22353 lines)"}, "properties": {"repobilityId": "115fb75e5f6a2e07", "scanner": "scanner-primary", "fingerprint": "de6d6b153a160780", "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": "ef1539fc7a195b16", "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": "4562064a14882a4f", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-d27871d4a4afc4aa", "level": "none", "message": {"text": "Commented-code block (13 lines) in exports.py:39"}, "properties": {"repobilityId": "08c228a6db862e46", "scanner": "scanner-primary", "fingerprint": "d27871d4a4afc4aa", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6acf9c9e0528878a", "level": "none", "message": {"text": "Commented-code block (6 lines) in generate_stats.py:649"}, "properties": {"repobilityId": "b9a39d975322d479", "scanner": "scanner-primary", "fingerprint": "6acf9c9e0528878a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-53b92c4777911569", "level": "none", "message": {"text": "Commented-code block (9 lines) in run_all_scrapers.py:79"}, "properties": {"repobilityId": "6fdc2b97a74e9a1c", "scanner": "scanner-primary", "fingerprint": "53b92c4777911569", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7370d33d620b7802", "level": "none", "message": {"text": "Commented-code block (7 lines) in publish_dag.py:206"}, "properties": {"repobilityId": "9aca714403a69e85", "scanner": "scanner-primary", "fingerprint": "7370d33d620b7802", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5c1da7000d948d97", "level": "none", "message": {"text": "Commented-code block (6 lines) in export_parquet.py:284"}, "properties": {"repobilityId": "16dd328ac706f23f", "scanner": "scanner-primary", "fingerprint": "5c1da7000d948d97", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-982aa76b51937b82", "level": "note", "message": {"text": "Stub function `fetch_decision` (body is just `pass`/`return`) \u2014 test_runtime_completeness_guards.py:47"}, "properties": {"repobilityId": "ef1625fb247d8e21", "scanner": "scanner-primary", "fingerprint": "982aa76b51937b82", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "empty-handler", "dead-code"]}}, {"ruleId": "scanner-3faa24cac0f02b26", "level": "none", "message": {"text": "Commented-code block (6 lines) in health_metrics.py:32"}, "properties": {"repobilityId": "3c6ccb36315500b3", "scanner": "scanner-primary", "fingerprint": "3faa24cac0f02b26", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-26659cda826aa9d6", "level": "none", "message": {"text": "Commented-code block (6 lines) in models.py:290"}, "properties": {"repobilityId": "212a96a78495c6d6", "scanner": "scanner-primary", "fingerprint": "26659cda826aa9d6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1be70df14999a25e", "level": "note", "message": {"text": "Stub function `mark_scraped` (body is just `pass`/`return`) \u2014 test_run_scraper_coverage_snapshot.py:20"}, "properties": {"repobilityId": "5ab6eabea2d7482b", "scanner": "scanner-primary", "fingerprint": "1be70df14999a25e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "empty-handler", "dead-code"]}}, {"ruleId": "scanner-74cf1d1ff6c3d434", "level": "none", "message": {"text": "Commented-code block (6 lines) in run_scraper.py:36"}, "properties": {"repobilityId": "457f51188915636b", "scanner": "scanner-primary", "fingerprint": "74cf1d1ff6c3d434", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4d619864c9aa71bf", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 run_scraper.py:820"}, "properties": {"repobilityId": "c40e32e1ddefeaaa", "scanner": "scanner-primary", "fingerprint": "4d619864c9aa71bf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-4f52bbb44d8f71d1", "level": "note", "message": {"text": "Legacy-named symbol `d_old` in test_reference_graph_resolution.py:23"}, "properties": {"repobilityId": "bcb6d291c3084bbb", "scanner": "scanner-primary", "fingerprint": "4f52bbb44d8f71d1", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-e294bcbeb127aeed", "level": "none", "message": {"text": "Commented-code block (7 lines) in publish.py:163"}, "properties": {"repobilityId": "3a5ada276d090d47", "scanner": "scanner-primary", "fingerprint": "e294bcbeb127aeed", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a8914d7642e2b86b", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 publish.py:950"}, "properties": {"repobilityId": "5b031b8fd9922180", "scanner": "scanner-primary", "fingerprint": "a8914d7642e2b86b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-5a023ec101a3db25", "level": "none", "message": {"text": "Commented-code block (5 lines) in seo_pages.py:29"}, "properties": {"repobilityId": "040bf019804fa7d5", "scanner": "scanner-primary", "fingerprint": "5a023ec101a3db25", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e3ddd57917660547", "level": "none", "message": {"text": "Commented-code block (5 lines) in build_fts5.py:962"}, "properties": {"repobilityId": "f17b3e585e3bd1a0", "scanner": "scanner-primary", "fingerprint": "e3ddd57917660547", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-133881bd133989ee", "level": "note", "message": {"text": "Legacy-named symbol `bger_old` in mcp_server.py:10519"}, "properties": {"repobilityId": "ffa725b49be002cd", "scanner": "scanner-primary", "fingerprint": "133881bd133989ee", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-883c3b42b28261c3", "level": "none", "message": {"text": "Commented-code block (5 lines) in mcp_server.py:199"}, "properties": {"repobilityId": "ef9da50abd8014da", "scanner": "scanner-primary", "fingerprint": "883c3b42b28261c3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d1d14d9555aab311", "level": "none", "message": {"text": "Commented-code block (5 lines) in incapsula_bypass.py:235"}, "properties": {"repobilityId": "2cd176d1a4505fc7", "scanner": "scanner-primary", "fingerprint": "d1d14d9555aab311", "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": "ae9fc2034a8bdc9d", "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": "7e7c9fc0cb63ca07", "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": "794a34a89b855eda", "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": "ea6cf95d958a035f", "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": "61385b90912f9965", "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": "41875a9f0f84a78a", "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": "618160e047ea3f04", "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": "14acc0adf1436b63", "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": "e93b9a6552789eae", "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": "55a5e0183fac3c43", "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": "61a2d41a65c336aa", "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": "ae3521010471c6ee", "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": "7f4eb797bd02e7bd", "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": "078e94626ef8430b", "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": "1c90bb4ba6889d9b", "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": "dab0d88c48a132e8", "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": "af853aab21099a64", "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": "488eb683483e0483", "scanner": "scanner-primary", "fingerprint": "49c98f7cedd9c977", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-fe5101bdebee08a1", "level": "error", "message": {"text": "FastAPI POST `mcp_invoke` without auth dependency \u2014 fts5_server.py:309"}, "properties": {"repobilityId": "a115c4ec031e43c6", "scanner": "scanner-primary", "fingerprint": "fe5101bdebee08a1", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "fts5_server.py"}, "region": {"startLine": 309}}}]}]}]}