{"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-9fd6d7496a1831aa", "name": "Possibly dead Python function: analyze_report", "shortDescription": {"text": "Possibly dead Python function: analyze_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-2911fe4a06acf264", "name": "Possibly dead Python function: scrape_fund_esg", "shortDescription": {"text": "Possibly dead Python function: scrape_fund_esg"}, "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-292669fc53a81cda", "name": "Possibly dead Python function: scrape_fund", "shortDescription": {"text": "Possibly dead Python function: scrape_fund"}, "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-8f7abe5e08b6a4aa", "name": "Possibly dead Python function: scan_fund_worker", "shortDescription": {"text": "Possibly dead Python function: scan_fund_worker"}, "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-d4313b90fafcd6ed", "name": "Possibly dead Python function: analyze_report_year", "shortDescription": {"text": "Possibly dead Python function: analyze_report_year"}, "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-b4a9b7ee170456fd", "name": "Possibly dead Python function: analyze_equity_strategy", "shortDescription": {"text": "Possibly dead Python function: analyze_equity_strategy"}, "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-b5ed802747e625f8", "name": "Possibly dead Python function: analyze_demographics", "shortDescription": {"text": "Possibly dead Python function: analyze_demographics"}, "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-a54349ad3d8ffdc8", "name": "Possibly dead Python function: analyze_report", "shortDescription": {"text": "Possibly dead Python function: analyze_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-fb4e10a4b4cd262b", "name": "Possibly dead Python function: analyze_benchmarks", "shortDescription": {"text": "Possibly dead Python function: analyze_benchmarks"}, "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-59ca3c008eec7a7e", "name": "Possibly dead Python function: analyze_equity_pct", "shortDescription": {"text": "Possibly dead Python function: analyze_equity_pct"}, "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-e893aadc8e816f9a", "name": "Possibly dead Python function: analyze_ratios", "shortDescription": {"text": "Possibly dead Python function: analyze_ratios"}, "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-58461257f03b1c13", "name": "Possibly dead Python function: fetch_one", "shortDescription": {"text": "Possibly dead Python function: fetch_one"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-df1058fa6d389831", "name": "Possibly dead Python function: cb", "shortDescription": {"text": "Possibly dead Python function: cb"}, "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-1a25bc77a5f6bfdd", "name": "Possibly dead Python function: page_sector_overview", "shortDescription": {"text": "Possibly dead Python function: page_sector_overview"}, "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-cfb5ffa99a67a765", "name": "Possibly dead Python function: page_fund_deep_dive", "shortDescription": {"text": "Possibly dead Python function: page_fund_deep_dive"}, "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-a91ab1a571216ff5", "name": "Possibly dead Python function: update_selected_fund", "shortDescription": {"text": "Possibly dead Python function: update_selected_fund"}, "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-592efd591fe74598", "name": "Possibly dead Python function: page_fund_comparison", "shortDescription": {"text": "Possibly dead Python function: page_fund_comparison"}, "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-0df26728d28ab159", "name": "Possibly dead Python function: page_trends", "shortDescription": {"text": "Possibly dead Python function: page_trends"}, "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-1d2ed2517a16b850", "name": "Possibly dead Python function: page_equity_strategy", "shortDescription": {"text": "Possibly dead Python function: page_equity_strategy"}, "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-6ff8a3004b4b6eee", "name": "Possibly dead Python function: page_asset_managers", "shortDescription": {"text": "Possibly dead Python function: page_asset_managers"}, "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-e00119998b2b2a1b", "name": "Possibly dead Python function: page_benchmarks", "shortDescription": {"text": "Possibly dead Python function: page_benchmarks"}, "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-fc799a8828748ea1", "name": "Possibly dead Python function: page_wtp_tracker", "shortDescription": {"text": "Possibly dead Python function: page_wtp_tracker"}, "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-728c4c8919694b22", "name": "Possibly dead Python function: tag", "shortDescription": {"text": "Possibly dead Python function: tag"}, "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-ab3c8f9c09861a8a", "name": "Possibly dead Python function: page_dekkingsgraad", "shortDescription": {"text": "Possibly dead Python function: page_dekkingsgraad"}, "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-f4cb557670d565f6", "name": "Possibly dead Python function: page_esg_sfdr", "shortDescription": {"text": "Possibly dead Python function: page_esg_sfdr"}, "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-338564d4a966bb21", "name": "Possibly dead Python function: page_news", "shortDescription": {"text": "Possibly dead Python function: page_news"}, "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-1f3bee4af47ea3f4", "name": "Possibly dead Python function: parse_dutch_date", "shortDescription": {"text": "Possibly dead Python function: parse_dutch_date"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-77c80da30353c947", "name": "Possibly dead Python function: page_begrippenlijst", "shortDescription": {"text": "Possibly dead Python function: page_begrippenlijst"}, "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-a133e117c5051d5b", "name": "Possibly dead Python function: page_ask_data", "shortDescription": {"text": "Possibly dead Python function: page_ask_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-48528564f13f7ea2", "name": "Possibly dead Python function: page_datacuratie", "shortDescription": {"text": "Possibly dead Python function: page_datacuratie"}, "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-b99d3511e883ce3f", "name": "Privileged port 6 in use", "shortDescription": {"text": "Privileged port 6 in use"}, "fullDescription": {"text": "Port 6 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6e097b8de49e3039", "name": "Privileged port 30 in use", "shortDescription": {"text": "Privileged port 30 in use"}, "fullDescription": {"text": "Port 30 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-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-377533e92e838e8c", "name": "Runtime dotenv file present in repo: scripts/.env", "shortDescription": {"text": "Runtime dotenv file present in repo: scripts/.env"}, "fullDescription": {"text": "`scripts/.env` looks like a runtime dotenv file. It contains secret-looking assignments for DNB_API_KEY. Move real values to a secret manager and keep only `.env.example` style templates in source control."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-5287c75c15a88ed2", "name": "Insecure pattern 'tls_verify_false' in parse_finals.py:13", "shortDescription": {"text": "Insecure pattern 'tls_verify_false' in parse_finals.py:13"}, "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-607c4e0cf462576e", "name": "Insecure pattern 'tls_verify_false' in scripts/document_parsing/parse_apf_transitie.py:19", "shortDescription": {"text": "Insecure pattern 'tls_verify_false' in scripts/document_parsing/parse_apf_transitie.py:19"}, "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-354570db7e0c55d2", "name": "Insecure pattern 'tls_verify_false' in scripts/document_parsing/parse_renb.py:13", "shortDescription": {"text": "Insecure pattern 'tls_verify_false' in scripts/document_parsing/parse_renb.py:13"}, "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-a37529d189026b0b", "name": "Insecure pattern 'tls_verify_false' in scripts/document_parsing/parse_transitieplannen.py:28", "shortDescription": {"text": "Insecure pattern 'tls_verify_false' in scripts/document_parsing/parse_transitieplannen.py:28"}, "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-5130df860847d82d", "name": "Insecure pattern 'tls_verify_false' in scripts/document_parsing/parse_oak.py:18", "shortDescription": {"text": "Insecure pattern 'tls_verify_false' in scripts/document_parsing/parse_oak.py:18"}, "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-312ba50ae0bbd6a6", "name": "Insecure pattern 'tls_verify_false' in scripts/document_parsing/parse_vanlanschot.py:23", "shortDescription": {"text": "Insecure pattern 'tls_verify_false' in scripts/document_parsing/parse_vanlanschot.py:23"}, "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-96dd61250cd36ac6", "name": "Insecure pattern 'tls_verify_false' in scripts/document_parsing/parse_dnapf.py:20", "shortDescription": {"text": "Insecure pattern 'tls_verify_false' in scripts/document_parsing/parse_dnapf.py:20"}, "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-025546b86d8355ce", "name": "Insecure pattern 'tls_verify_false' in scripts/document_parsing/parse_hnpf.py:14", "shortDescription": {"text": "Insecure pattern 'tls_verify_false' in scripts/document_parsing/parse_hnpf.py:14"}, "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-56ff0ed1a8226cb1", "name": "Insecure pattern 'tls_verify_false' in scripts/document_parsing/parse_denationaleapf.py:16", "shortDescription": {"text": "Insecure pattern 'tls_verify_false' in scripts/document_parsing/parse_denationaleapf.py:16"}, "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-f172f9bc30527379", "name": "Insecure pattern 'tls_verify_false' in scripts/document_parsing/extract_sfdr_metrics.py:180", "shortDescription": {"text": "Insecure pattern 'tls_verify_false' in scripts/document_parsing/extract_sfdr_metrics.py:180"}, "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-fdcc44755354c23c", "name": "Insecure pattern 'tls_verify_false' in scripts/document_parsing/parse_vanlanschot2.py:18", "shortDescription": {"text": "Insecure pattern 'tls_verify_false' in scripts/document_parsing/parse_vanlanschot2.py:18"}, "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-d0602eb216c096b4", "name": "Insecure pattern 'tls_verify_false' in scripts/data_collection/search_and_download_reports.py:51", "shortDescription": {"text": "Insecure pattern 'tls_verify_false' in scripts/data_collection/search_and_download_reports.py:51"}, "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-1534cac3a88e91e7", "name": "Insecure pattern 'tls_verify_false' in scripts/data_collection/scrape_2024_old_reports.py:47", "shortDescription": {"text": "Insecure pattern 'tls_verify_false' in scripts/data_collection/scrape_2024_old_reports.py:47"}, "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-b4ff5d033176ee65", "name": "Insecure pattern 'tls_verify_false' in scripts/data_collection/scrape_esg_reports.py:78", "shortDescription": {"text": "Insecure pattern 'tls_verify_false' in scripts/data_collection/scrape_esg_reports.py:78"}, "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-e9e693fbd156fba2", "name": "Insecure pattern 'tls_verify_false' in scripts/data_collection/scrape_historical_annual_reports.py:55", "shortDescription": {"text": "Insecure pattern 'tls_verify_false' in scripts/data_collection/scrape_historical_annual_reports.py:55"}, "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-3c8acef6db1bf911", "name": "Insecure pattern 'tls_verify_false' in scripts/data_collection/scrape_user_links_robust.py:25", "shortDescription": {"text": "Insecure pattern 'tls_verify_false' in scripts/data_collection/scrape_user_links_robust.py:25"}, "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-07abb149359600a1", "name": "Insecure pattern 'tls_verify_false' in scripts/data_collection/pull_appended_reports.py:38", "shortDescription": {"text": "Insecure pattern 'tls_verify_false' in scripts/data_collection/pull_appended_reports.py:38"}, "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-7eb711914944a0a2", "name": "Insecure pattern 'tls_verify_false' in scripts/data_collection/scrape_board_members.py:115", "shortDescription": {"text": "Insecure pattern 'tls_verify_false' in scripts/data_collection/scrape_board_members.py:115"}, "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-a258344ffe5b6a99", "name": "Insecure pattern 'tls_verify_false' in scripts/data_collection/scrape_missing_reports_advanced.py:40", "shortDescription": {"text": "Insecure pattern 'tls_verify_false' in scripts/data_collection/scrape_missing_reports_advanced.py:40"}, "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-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-5bd329ea270db2c0", "name": "Very large file: scripts/utils_and_viz/dashboard.py (2858 lines)", "shortDescription": {"text": "Very large file: scripts/utils_and_viz/dashboard.py (2858 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": "11 test file(s) for 179 source file(s) (ratio 0.06). 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-01f96f71d9907a8c", "name": "README lacks setup or run instructions", "shortDescription": {"text": "README lacks setup or run instructions"}, "fullDescription": {"text": "A README exists, but it does not contain common install/setup/run markers. This matches a frequent generated-code pattern: UI is present, operational handoff is thin."}, "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 810 console/debugger/print-style debug statements in non-test source. This is a common fast-generation residue before production cleanup."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-72b2a6250083a784", "name": "Placeholder or mock-heavy implementation detected", "shortDescription": {"text": "Placeholder or mock-heavy implementation detected"}, "fullDescription": {"text": "Found 13 placeholder/mock markers across 4 source files. This often means the repo looks complete while core flows still use generated scaffolding or fake data."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2d0c7b7ab8f8aacf", "name": "Critical user flow still appears backed by mock or placeholder data", "shortDescription": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "fullDescription": {"text": "A payment/auth/admin/order/billing-style flow contains mock, fake, TODO, dummy, or placeholder markers in runtime source. In the Fable corpus this is a high-leverage completeness smell: the app can look finished while the money, identity, or tenant flow is still scaffolded."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-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-749d4bc1bd66df5f", "name": "Agent instructions exist but release-hardening basics are missing", "shortDescription": {"text": "Agent instructions exist but release-hardening basics are missing"}, "fullDescription": {"text": "AI-coder instruction files were found, but the repo is missing license, ci, operator-readme. Treat this as a contract gap: the agent is guided, but the generated output is not yet guarded by the controls that make it repeatable."}, "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-611040b0d90a3171", "name": "Commented-code block (5 lines) in scripts/document_parsing/llm_extract.py:41", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/document_parsing/llm_extract.py:41"}, "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-fbaaadc10ad1307f", "name": "Commented-code block (5 lines) in scripts/document_parsing/extract_aum.py:35", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/document_parsing/extract_aum.py:35"}, "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-44ea2f929c2b2904", "name": "Commented-code block (5 lines) in scripts/document_parsing/extract_transitieoverzicht.py:13", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/document_parsing/extract_transitieoverzicht.py:13"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-60151283a557e40f", "name": "Network/subprocess call without timeout or try/except \u2014 scripts/data_collection/download_bpfbouw.py:13", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 scripts/data_collection/download_bpfbouw.py:13"}, "fullDescription": {"text": "`requests.get(...)` 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-25362aa5a766a531", "name": "Commented-code block (6 lines) in scripts/db_management/derive_benchmark_providers.py:28", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/db_management/derive_benchmark_providers.py:28"}, "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-f0aacef188967891", "name": "Network/subprocess call without timeout or try/except \u2014 scripts/db_management/update_abn.py:32", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 scripts/db_management/update_abn.py:32"}, "fullDescription": {"text": "`urllib.request.urlopen(...)` 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-06efdb297756789e", "name": "Network/subprocess call without timeout or try/except \u2014 scripts/utils_and_viz/find_missing_funds.py:9", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 scripts/utils_and_viz/find_missing_funds.py:9"}, "fullDescription": {"text": "`requests.get(...)` 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-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:\nscripts/document_parsing/pass_31_deep_extraction.py:extract_text_from_pdf, scripts/analysis/analyze_mix_and_costs.py:extract_text_from_pdf\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-02525d39071dd2c7", "name": "Near-duplicate function bodies in 5 places", "shortDescription": {"text": "Near-duplicate function bodies in 5 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\nscripts/document_parsing/pass_31_deep_extraction.py:analyze_report, scripts/analysis/analyze_report_year.py:analyze_report_year, scripts/analysis/analyze_demographics.py:analyze_demographics, scripts/analysis/analyze_mix_and_costs.py:analyze_report\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:\nscripts/document_parsing/extract_aum.py:find_aum, scripts/analysis/analyze_management_style.py:find_management_style, scripts/analysis/analyze_geography.py:find_geographic_allocation, scripts/analysis/analyze_geo_weights.py:find_specific_geo_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:\nscripts/data_collection/search_and_download_reports.py:mark_downloaded, scripts/data_collection/pull_appended_reports.py:mark_downloaded, scripts/data_collection/scrape_missing_reports_advanced.py:mark_downloaded\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-5baa8971ebe192a1", "name": "Unused endpoint: GET /", "shortDescription": {"text": "Unused endpoint: GET /"}, "fullDescription": {"text": "`scripts/api/main.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-4756b4c4da7d2088", "name": "Unused endpoint: GET /api/health", "shortDescription": {"text": "Unused endpoint: GET /api/health"}, "fullDescription": {"text": "`scripts/api/main.py` declares `GET /api/health` 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-14771d35719b78bd", "name": "Unused endpoint: GET /api/funds", "shortDescription": {"text": "Unused endpoint: GET /api/funds"}, "fullDescription": {"text": "`scripts/api/main.py` declares `GET /api/funds` 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-e8184f7022d399af", "name": "Unused endpoint: GET /api/funds/{fund_id}", "shortDescription": {"text": "Unused endpoint: GET /api/funds/{fund_id}"}, "fullDescription": {"text": "`scripts/api/main.py` declares `GET /api/funds/{fund_id}` 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-fd56680131fb12e7", "name": "Unused endpoint: GET /api/historical/{fund_id}", "shortDescription": {"text": "Unused endpoint: GET /api/historical/{fund_id}"}, "fullDescription": {"text": "`scripts/api/main.py` declares `GET /api/historical/{fund_id}` 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-778f45a124dbd2e7", "name": "Unused endpoint: GET /api/news", "shortDescription": {"text": "Unused endpoint: GET /api/news"}, "fullDescription": {"text": "`scripts/api/main.py` declares `GET /api/news` 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/22866"}, "properties": {"repository": "woyzeck1978/pensioenfondsen", "repoUrl": "https://github.com/woyzeck1978/pensioenfondsen", "branch": "main"}, "results": [{"ruleId": "scanner-9fd6d7496a1831aa", "level": "note", "message": {"text": "Possibly dead Python function: analyze_report"}, "properties": {"repobilityId": "a92ccc4ae22604d1", "scanner": "scanner-primary", "fingerprint": "9fd6d7496a1831aa", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/document_parsing/pass_31_deep_extraction.py:21"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-2911fe4a06acf264", "level": "note", "message": {"text": "Possibly dead Python function: scrape_fund_esg"}, "properties": {"repobilityId": "ed6a733785aafd89", "scanner": "scanner-primary", "fingerprint": "2911fe4a06acf264", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/data_collection/scrape_esg_reports.py:71"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-292669fc53a81cda", "level": "note", "message": {"text": "Possibly dead Python function: scrape_fund"}, "properties": {"repobilityId": "a0793c4f4fd1ab90", "scanner": "scanner-primary", "fingerprint": "292669fc53a81cda", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/data_collection/scrape_historical_annual_reports.py:86"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-8f7abe5e08b6a4aa", "level": "note", "message": {"text": "Possibly dead Python function: scan_fund_worker"}, "properties": {"repobilityId": "968370125ae85e4a", "scanner": "scanner-primary", "fingerprint": "8f7abe5e08b6a4aa", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/data_collection/monitor_websites_concurrent.py:56"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d4313b90fafcd6ed", "level": "note", "message": {"text": "Possibly dead Python function: analyze_report_year"}, "properties": {"repobilityId": "321020eff6821f18", "scanner": "scanner-primary", "fingerprint": "d4313b90fafcd6ed", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/analysis/analyze_report_year.py:21"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-b4a9b7ee170456fd", "level": "note", "message": {"text": "Possibly dead Python function: analyze_equity_strategy"}, "properties": {"repobilityId": "520ad12ecbc30cb4", "scanner": "scanner-primary", "fingerprint": "b4a9b7ee170456fd", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/analysis/analyze_equity_strategy.py:57"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-b5ed802747e625f8", "level": "note", "message": {"text": "Possibly dead Python function: analyze_demographics"}, "properties": {"repobilityId": "440793715a7b0a6c", "scanner": "scanner-primary", "fingerprint": "b5ed802747e625f8", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/analysis/analyze_demographics.py:67"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a54349ad3d8ffdc8", "level": "note", "message": {"text": "Possibly dead Python function: analyze_report"}, "properties": {"repobilityId": "a92ccc4ae22604d1", "scanner": "scanner-primary", "fingerprint": "a54349ad3d8ffdc8", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/analysis/analyze_mix_and_costs.py:21"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-fb4e10a4b4cd262b", "level": "note", "message": {"text": "Possibly dead Python function: analyze_benchmarks"}, "properties": {"repobilityId": "781269787d869500", "scanner": "scanner-primary", "fingerprint": "fb4e10a4b4cd262b", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/analysis/analyze_benchmarks.py:21"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-59ca3c008eec7a7e", "level": "note", "message": {"text": "Possibly dead Python function: analyze_equity_pct"}, "properties": {"repobilityId": "013eb9d7c82e4fb3", "scanner": "scanner-primary", "fingerprint": "59ca3c008eec7a7e", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/analysis/analyze_equity_pct.py:20"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e893aadc8e816f9a", "level": "note", "message": {"text": "Possibly dead Python function: analyze_ratios"}, "properties": {"repobilityId": "d874e8ae82978a02", "scanner": "scanner-primary", "fingerprint": "e893aadc8e816f9a", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/analysis/analyze_coverage_ratios.py:20"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-58461257f03b1c13", "level": "note", "message": {"text": "Possibly dead Python function: fetch_one"}, "properties": {"repobilityId": "87b4aa7c92d11833", "scanner": "scanner-primary", "fingerprint": "58461257f03b1c13", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/db_management/fix_news_dates.py:81"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-df1058fa6d389831", "level": "note", "message": {"text": "Possibly dead Python function: cb"}, "properties": {"repobilityId": "c388730a0badedf1", "scanner": "scanner-primary", "fingerprint": "df1058fa6d389831", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/utils_and_viz/dashboard.py:677"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-1a25bc77a5f6bfdd", "level": "note", "message": {"text": "Possibly dead Python function: page_sector_overview"}, "properties": {"repobilityId": "e9fcaa65188dc3a2", "scanner": "scanner-primary", "fingerprint": "1a25bc77a5f6bfdd", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/utils_and_viz/dashboard.py:698"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-cfb5ffa99a67a765", "level": "note", "message": {"text": "Possibly dead Python function: page_fund_deep_dive"}, "properties": {"repobilityId": "707db0fb5a4d91aa", "scanner": "scanner-primary", "fingerprint": "cfb5ffa99a67a765", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/utils_and_viz/dashboard.py:925"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a91ab1a571216ff5", "level": "note", "message": {"text": "Possibly dead Python function: update_selected_fund"}, "properties": {"repobilityId": "45c994348f14b7a0", "scanner": "scanner-primary", "fingerprint": "a91ab1a571216ff5", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/utils_and_viz/dashboard.py:937"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-592efd591fe74598", "level": "note", "message": {"text": "Possibly dead Python function: page_fund_comparison"}, "properties": {"repobilityId": "57b5b2ca4092a888", "scanner": "scanner-primary", "fingerprint": "592efd591fe74598", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/utils_and_viz/dashboard.py:1382"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-0df26728d28ab159", "level": "note", "message": {"text": "Possibly dead Python function: page_trends"}, "properties": {"repobilityId": "1df7aefd33ecffa5", "scanner": "scanner-primary", "fingerprint": "0df26728d28ab159", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/utils_and_viz/dashboard.py:1504"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-1d2ed2517a16b850", "level": "note", "message": {"text": "Possibly dead Python function: page_equity_strategy"}, "properties": {"repobilityId": "2f34834b31e73e35", "scanner": "scanner-primary", "fingerprint": "1d2ed2517a16b850", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/utils_and_viz/dashboard.py:1644"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-6ff8a3004b4b6eee", "level": "note", "message": {"text": "Possibly dead Python function: page_asset_managers"}, "properties": {"repobilityId": "3a028f9cc7bdfb2c", "scanner": "scanner-primary", "fingerprint": "6ff8a3004b4b6eee", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/utils_and_viz/dashboard.py:1716"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e00119998b2b2a1b", "level": "note", "message": {"text": "Possibly dead Python function: page_benchmarks"}, "properties": {"repobilityId": "24dd8e275e7d6255", "scanner": "scanner-primary", "fingerprint": "e00119998b2b2a1b", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/utils_and_viz/dashboard.py:1762"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-fc799a8828748ea1", "level": "note", "message": {"text": "Possibly dead Python function: page_wtp_tracker"}, "properties": {"repobilityId": "bc5308806f7e22eb", "scanner": "scanner-primary", "fingerprint": "fc799a8828748ea1", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/utils_and_viz/dashboard.py:1918"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-728c4c8919694b22", "level": "note", "message": {"text": "Possibly dead Python function: tag"}, "properties": {"repobilityId": "c4c02e3159c36524", "scanner": "scanner-primary", "fingerprint": "728c4c8919694b22", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/utils_and_viz/dashboard.py:2003"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-ab3c8f9c09861a8a", "level": "note", "message": {"text": "Possibly dead Python function: page_dekkingsgraad"}, "properties": {"repobilityId": "6b4bf9cbe5bf8254", "scanner": "scanner-primary", "fingerprint": "ab3c8f9c09861a8a", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/utils_and_viz/dashboard.py:2285"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f4cb557670d565f6", "level": "note", "message": {"text": "Possibly dead Python function: page_esg_sfdr"}, "properties": {"repobilityId": "11aafae41867f2dd", "scanner": "scanner-primary", "fingerprint": "f4cb557670d565f6", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/utils_and_viz/dashboard.py:2350"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-338564d4a966bb21", "level": "note", "message": {"text": "Possibly dead Python function: page_news"}, "properties": {"repobilityId": "191586d8a884fea9", "scanner": "scanner-primary", "fingerprint": "338564d4a966bb21", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/utils_and_viz/dashboard.py:2424"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-1f3bee4af47ea3f4", "level": "note", "message": {"text": "Possibly dead Python function: parse_dutch_date"}, "properties": {"repobilityId": "561d379a7490b9ae", "scanner": "scanner-primary", "fingerprint": "1f3bee4af47ea3f4", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/utils_and_viz/dashboard.py:2438"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-77c80da30353c947", "level": "note", "message": {"text": "Possibly dead Python function: page_begrippenlijst"}, "properties": {"repobilityId": "1e24171874fe0d5e", "scanner": "scanner-primary", "fingerprint": "77c80da30353c947", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/utils_and_viz/dashboard.py:2558"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a133e117c5051d5b", "level": "note", "message": {"text": "Possibly dead Python function: page_ask_data"}, "properties": {"repobilityId": "bd5d5716340c54ec", "scanner": "scanner-primary", "fingerprint": "a133e117c5051d5b", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/utils_and_viz/dashboard.py:2585"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-48528564f13f7ea2", "level": "note", "message": {"text": "Possibly dead Python function: page_datacuratie"}, "properties": {"repobilityId": "68e4bc891f346ab7", "scanner": "scanner-primary", "fingerprint": "48528564f13f7ea2", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/utils_and_viz/dashboard.py:2652"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-b99d3511e883ce3f", "level": "warning", "message": {"text": "Privileged port 6 in use"}, "properties": {"repobilityId": "888a3c205ea7334c", "scanner": "scanner-primary", "fingerprint": "b99d3511e883ce3f", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/automation/setup_server.sh"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-6e097b8de49e3039", "level": "warning", "message": {"text": "Privileged port 30 in use"}, "properties": {"repobilityId": "54f172e7d16fc662", "scanner": "scanner-primary", "fingerprint": "6e097b8de49e3039", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/automation/setup_server.sh"}, "region": {"startLine": 1}}}]}, {"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-377533e92e838e8c", "level": "error", "message": {"text": "Runtime dotenv file present in repo: scripts/.env"}, "properties": {"repobilityId": "1d4760e00ae26074", "scanner": "scanner-primary", "fingerprint": "377533e92e838e8c", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets", "config", "env-file", "runtime-env", "env_file_with_secret"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/.env"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-5287c75c15a88ed2", "level": "error", "message": {"text": "Insecure pattern 'tls_verify_false' in parse_finals.py:13"}, "properties": {"repobilityId": "47621506d34b30ca", "scanner": "scanner-primary", "fingerprint": "5287c75c15a88ed2", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "tls_verify_false"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "parse_finals.py"}, "region": {"startLine": 13}}}]}, {"ruleId": "scanner-607c4e0cf462576e", "level": "error", "message": {"text": "Insecure pattern 'tls_verify_false' in scripts/document_parsing/parse_apf_transitie.py:19"}, "properties": {"repobilityId": "ac215c0d7d6d3dea", "scanner": "scanner-primary", "fingerprint": "607c4e0cf462576e", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "tls_verify_false"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/document_parsing/parse_apf_transitie.py"}, "region": {"startLine": 19}}}]}, {"ruleId": "scanner-354570db7e0c55d2", "level": "error", "message": {"text": "Insecure pattern 'tls_verify_false' in scripts/document_parsing/parse_renb.py:13"}, "properties": {"repobilityId": "848fb5546bdba6cb", "scanner": "scanner-primary", "fingerprint": "354570db7e0c55d2", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "tls_verify_false"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/document_parsing/parse_renb.py"}, "region": {"startLine": 13}}}]}, {"ruleId": "scanner-a37529d189026b0b", "level": "error", "message": {"text": "Insecure pattern 'tls_verify_false' in scripts/document_parsing/parse_transitieplannen.py:28"}, "properties": {"repobilityId": "2dcff12c718d267a", "scanner": "scanner-primary", "fingerprint": "a37529d189026b0b", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "tls_verify_false"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/document_parsing/parse_transitieplannen.py"}, "region": {"startLine": 28}}}]}, {"ruleId": "scanner-5130df860847d82d", "level": "error", "message": {"text": "Insecure pattern 'tls_verify_false' in scripts/document_parsing/parse_oak.py:18"}, "properties": {"repobilityId": "97dac73a81f51912", "scanner": "scanner-primary", "fingerprint": "5130df860847d82d", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "tls_verify_false"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/document_parsing/parse_oak.py"}, "region": {"startLine": 18}}}]}, {"ruleId": "scanner-312ba50ae0bbd6a6", "level": "error", "message": {"text": "Insecure pattern 'tls_verify_false' in scripts/document_parsing/parse_vanlanschot.py:23"}, "properties": {"repobilityId": "021739d3cfe9a7aa", "scanner": "scanner-primary", "fingerprint": "312ba50ae0bbd6a6", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "tls_verify_false"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/document_parsing/parse_vanlanschot.py"}, "region": {"startLine": 23}}}]}, {"ruleId": "scanner-96dd61250cd36ac6", "level": "error", "message": {"text": "Insecure pattern 'tls_verify_false' in scripts/document_parsing/parse_dnapf.py:20"}, "properties": {"repobilityId": "2a93f14f1edbfae1", "scanner": "scanner-primary", "fingerprint": "96dd61250cd36ac6", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "tls_verify_false"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/document_parsing/parse_dnapf.py"}, "region": {"startLine": 20}}}]}, {"ruleId": "scanner-025546b86d8355ce", "level": "error", "message": {"text": "Insecure pattern 'tls_verify_false' in scripts/document_parsing/parse_hnpf.py:14"}, "properties": {"repobilityId": "3bb2f4e6f296709c", "scanner": "scanner-primary", "fingerprint": "025546b86d8355ce", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "tls_verify_false"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/document_parsing/parse_hnpf.py"}, "region": {"startLine": 14}}}]}, {"ruleId": "scanner-56ff0ed1a8226cb1", "level": "error", "message": {"text": "Insecure pattern 'tls_verify_false' in scripts/document_parsing/parse_denationaleapf.py:16"}, "properties": {"repobilityId": "a370e6e573e5b629", "scanner": "scanner-primary", "fingerprint": "56ff0ed1a8226cb1", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "tls_verify_false"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/document_parsing/parse_denationaleapf.py"}, "region": {"startLine": 16}}}]}, {"ruleId": "scanner-f172f9bc30527379", "level": "error", "message": {"text": "Insecure pattern 'tls_verify_false' in scripts/document_parsing/extract_sfdr_metrics.py:180"}, "properties": {"repobilityId": "fd119d57a284233a", "scanner": "scanner-primary", "fingerprint": "f172f9bc30527379", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "tls_verify_false"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/document_parsing/extract_sfdr_metrics.py"}, "region": {"startLine": 180}}}]}, {"ruleId": "scanner-fdcc44755354c23c", "level": "error", "message": {"text": "Insecure pattern 'tls_verify_false' in scripts/document_parsing/parse_vanlanschot2.py:18"}, "properties": {"repobilityId": "1ab2785800d7c40a", "scanner": "scanner-primary", "fingerprint": "fdcc44755354c23c", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "tls_verify_false"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/document_parsing/parse_vanlanschot2.py"}, "region": {"startLine": 18}}}]}, {"ruleId": "scanner-d0602eb216c096b4", "level": "error", "message": {"text": "Insecure pattern 'tls_verify_false' in scripts/data_collection/search_and_download_reports.py:51"}, "properties": {"repobilityId": "f8265da35d922423", "scanner": "scanner-primary", "fingerprint": "d0602eb216c096b4", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "tls_verify_false"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/data_collection/search_and_download_reports.py"}, "region": {"startLine": 51}}}]}, {"ruleId": "scanner-1534cac3a88e91e7", "level": "error", "message": {"text": "Insecure pattern 'tls_verify_false' in scripts/data_collection/scrape_2024_old_reports.py:47"}, "properties": {"repobilityId": "28a39e8788350fd2", "scanner": "scanner-primary", "fingerprint": "1534cac3a88e91e7", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "tls_verify_false"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/data_collection/scrape_2024_old_reports.py"}, "region": {"startLine": 47}}}]}, {"ruleId": "scanner-b4ff5d033176ee65", "level": "error", "message": {"text": "Insecure pattern 'tls_verify_false' in scripts/data_collection/scrape_esg_reports.py:78"}, "properties": {"repobilityId": "b94dc92025c1724e", "scanner": "scanner-primary", "fingerprint": "b4ff5d033176ee65", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "tls_verify_false"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/data_collection/scrape_esg_reports.py"}, "region": {"startLine": 78}}}]}, {"ruleId": "scanner-e9e693fbd156fba2", "level": "error", "message": {"text": "Insecure pattern 'tls_verify_false' in scripts/data_collection/scrape_historical_annual_reports.py:55"}, "properties": {"repobilityId": "d706a7014fb3ccc5", "scanner": "scanner-primary", "fingerprint": "e9e693fbd156fba2", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "tls_verify_false"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/data_collection/scrape_historical_annual_reports.py"}, "region": {"startLine": 55}}}]}, {"ruleId": "scanner-3c8acef6db1bf911", "level": "error", "message": {"text": "Insecure pattern 'tls_verify_false' in scripts/data_collection/scrape_user_links_robust.py:25"}, "properties": {"repobilityId": "2d80534e4e11bb90", "scanner": "scanner-primary", "fingerprint": "3c8acef6db1bf911", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "tls_verify_false"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/data_collection/scrape_user_links_robust.py"}, "region": {"startLine": 25}}}]}, {"ruleId": "scanner-07abb149359600a1", "level": "error", "message": {"text": "Insecure pattern 'tls_verify_false' in scripts/data_collection/pull_appended_reports.py:38"}, "properties": {"repobilityId": "3bd53894c8fc1641", "scanner": "scanner-primary", "fingerprint": "07abb149359600a1", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "tls_verify_false"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/data_collection/pull_appended_reports.py"}, "region": {"startLine": 38}}}]}, {"ruleId": "scanner-7eb711914944a0a2", "level": "error", "message": {"text": "Insecure pattern 'tls_verify_false' in scripts/data_collection/scrape_board_members.py:115"}, "properties": {"repobilityId": "8c69f133863c1abc", "scanner": "scanner-primary", "fingerprint": "7eb711914944a0a2", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "tls_verify_false"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/data_collection/scrape_board_members.py"}, "region": {"startLine": 115}}}]}, {"ruleId": "scanner-a258344ffe5b6a99", "level": "error", "message": {"text": "Insecure pattern 'tls_verify_false' in scripts/data_collection/scrape_missing_reports_advanced.py:40"}, "properties": {"repobilityId": "a0b5c9b084817dd8", "scanner": "scanner-primary", "fingerprint": "a258344ffe5b6a99", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "tls_verify_false"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/data_collection/scrape_missing_reports_advanced.py"}, "region": {"startLine": 40}}}]}, {"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-5bd329ea270db2c0", "level": "note", "message": {"text": "Very large file: scripts/utils_and_viz/dashboard.py (2858 lines)"}, "properties": {"repobilityId": "ba89d835e41bbce5", "scanner": "scanner-primary", "fingerprint": "5bd329ea270db2c0", "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": "f14e67b54970900b", "scanner": "scanner-primary", "fingerprint": "141b30a41e03817b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["license", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-01f96f71d9907a8c", "level": "note", "message": {"text": "README lacks setup or run instructions"}, "properties": {"repobilityId": "ef11451dc542d2b5", "scanner": "scanner-primary", "fingerprint": "01f96f71d9907a8c", "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": "c116c0430abf32e7", "scanner": "scanner-primary", "fingerprint": "3ab5d313dda8e5f9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["debug", "cleanup", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-72b2a6250083a784", "level": "warning", "message": {"text": "Placeholder or mock-heavy implementation detected"}, "properties": {"repobilityId": "4d2902078504a83b", "scanner": "scanner-primary", "fingerprint": "72b2a6250083a784", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "incomplete", "generated-repo-pattern"]}}, {"ruleId": "scanner-2d0c7b7ab8f8aacf", "level": "warning", "message": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "properties": {"repobilityId": "0f8f0cd9088ba69f", "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": "9bb19a0b8dcdac28", "scanner": "scanner-primary", "fingerprint": "b9088664ace7f748", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["production-readiness", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-749d4bc1bd66df5f", "level": "warning", "message": {"text": "Agent instructions exist but release-hardening basics are missing"}, "properties": {"repobilityId": "2e10a8f9060444cb", "scanner": "scanner-primary", "fingerprint": "749d4bc1bd66df5f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-ea8f3013f588db25", "level": "note", "message": {"text": "Shallow git history limits provenance confidence"}, "properties": {"repobilityId": "8a9548c7d584c662", "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": "c1084f2c450034e4", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-611040b0d90a3171", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/document_parsing/llm_extract.py:41"}, "properties": {"repobilityId": "87928ce63c9c8b7d", "scanner": "scanner-primary", "fingerprint": "611040b0d90a3171", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fbaaadc10ad1307f", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/document_parsing/extract_aum.py:35"}, "properties": {"repobilityId": "363e3f6fd8a0f36b", "scanner": "scanner-primary", "fingerprint": "fbaaadc10ad1307f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-44ea2f929c2b2904", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/document_parsing/extract_transitieoverzicht.py:13"}, "properties": {"repobilityId": "762adb9e08716abe", "scanner": "scanner-primary", "fingerprint": "44ea2f929c2b2904", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-60151283a557e40f", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 scripts/data_collection/download_bpfbouw.py:13"}, "properties": {"repobilityId": "ada6d42c082d63f7", "scanner": "scanner-primary", "fingerprint": "60151283a557e40f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-25362aa5a766a531", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/db_management/derive_benchmark_providers.py:28"}, "properties": {"repobilityId": "4198196104f1fb68", "scanner": "scanner-primary", "fingerprint": "25362aa5a766a531", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f0aacef188967891", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 scripts/db_management/update_abn.py:32"}, "properties": {"repobilityId": "7a8b376441a5b588", "scanner": "scanner-primary", "fingerprint": "f0aacef188967891", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-06efdb297756789e", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 scripts/utils_and_viz/find_missing_funds.py:9"}, "properties": {"repobilityId": "467e8bfa026ebd6e", "scanner": "scanner-primary", "fingerprint": "06efdb297756789e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "0c5e39deadd3bc4b", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-02525d39071dd2c7", "level": "note", "message": {"text": "Near-duplicate function bodies in 5 places"}, "properties": {"repobilityId": "8176d86fc0494c1c", "scanner": "scanner-primary", "fingerprint": "02525d39071dd2c7", "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": "37260f7ef7e7689b", "scanner": "scanner-primary", "fingerprint": "49c98f7cedd9c977", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "fd63f514d9709df4", "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": "4bc5a5a50aee94db", "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": "c3e69f8e94bcf3c4", "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": "80dd721c355bc76b", "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": "752efbfd6db1581b", "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": "67f3db4d369e8e1d", "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": "f8151762939eecdb", "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": "b2c8e005770b8f39", "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": "09929e87d47b5cf6", "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": "e132988c91acdee2", "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": "86d18e7f38f8a4a4", "scanner": "scanner-primary", "fingerprint": "be46ea126aa5d8dc", "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": "40ee3fa9559f6d1d", "scanner": "scanner-primary", "fingerprint": "49c98f7cedd9c977", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-02525d39071dd2c7", "level": "note", "message": {"text": "Near-duplicate function bodies in 5 places"}, "properties": {"repobilityId": "12886d33846dcdec", "scanner": "scanner-primary", "fingerprint": "02525d39071dd2c7", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "33d3d73e66d6618b", "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": "a2035e94763e303a", "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": "d10c05ec8fef3404", "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": "258c9469c263efa6", "scanner": "scanner-primary", "fingerprint": "49c98f7cedd9c977", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-5baa8971ebe192a1", "level": "note", "message": {"text": "Unused endpoint: GET /"}, "properties": {"repobilityId": "33ebf1a03529ae88", "scanner": "scanner-primary", "fingerprint": "5baa8971ebe192a1", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-4756b4c4da7d2088", "level": "note", "message": {"text": "Unused endpoint: GET /api/health"}, "properties": {"repobilityId": "86f5085e21289a6c", "scanner": "scanner-primary", "fingerprint": "4756b4c4da7d2088", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-14771d35719b78bd", "level": "note", "message": {"text": "Unused endpoint: GET /api/funds"}, "properties": {"repobilityId": "ab6f0b7b29651772", "scanner": "scanner-primary", "fingerprint": "14771d35719b78bd", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-e8184f7022d399af", "level": "note", "message": {"text": "Unused endpoint: GET /api/funds/{fund_id}"}, "properties": {"repobilityId": "c2321870402c2a78", "scanner": "scanner-primary", "fingerprint": "e8184f7022d399af", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-fd56680131fb12e7", "level": "note", "message": {"text": "Unused endpoint: GET /api/historical/{fund_id}"}, "properties": {"repobilityId": "abf4a322f97c7a52", "scanner": "scanner-primary", "fingerprint": "fd56680131fb12e7", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-778f45a124dbd2e7", "level": "note", "message": {"text": "Unused endpoint: GET /api/news"}, "properties": {"repobilityId": "3dec621ff25d2f3e", "scanner": "scanner-primary", "fingerprint": "778f45a124dbd2e7", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}]}]}