{"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-239d2590f6b00276", "name": "Possibly dead Python function: handle_starttag", "shortDescription": {"text": "Possibly dead Python function: handle_starttag"}, "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-8391bff8e447d3e6", "name": "Possibly dead Python function: handle_endtag", "shortDescription": {"text": "Possibly dead Python function: handle_endtag"}, "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-400d4325090dcbb5", "name": "Possibly dead Python function: handle_data", "shortDescription": {"text": "Possibly dead Python function: handle_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-2ca56bb8d370e8de", "name": "Possibly dead Python function: check_content_changed", "shortDescription": {"text": "Possibly dead Python function: check_content_changed"}, "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-ee1b189d5a1583fb", "name": "Possibly dead Python function: format_recommendation_text", "shortDescription": {"text": "Possibly dead Python function: format_recommendation_text"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a698ed69cb851b2e", "name": "Possibly dead Python function: generate_postmortem", "shortDescription": {"text": "Possibly dead Python function: generate_postmortem"}, "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-de1f7e4d1ee0aa14", "name": "Possibly dead Python function: start_proactive_health", "shortDescription": {"text": "Possibly dead Python function: start_proactive_health"}, "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-a968e96983041f48", "name": "Possibly dead Python function: stop_proactive_health", "shortDescription": {"text": "Possibly dead Python function: stop_proactive_health"}, "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-04120eb4ecee725f", "name": "Possibly dead Python function: send_brief_email", "shortDescription": {"text": "Possibly dead Python function: send_brief_email"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e52782de85b71e7a", "name": "Possibly dead Python function: send_pulse_email", "shortDescription": {"text": "Possibly dead Python function: send_pulse_email"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ac6c85e9eb60ba02", "name": "Possibly dead Python function: set_ab_test", "shortDescription": {"text": "Possibly dead Python function: set_ab_test"}, "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-a37c58171f28bb87", "name": "Possibly dead Python function: record_ab_result", "shortDescription": {"text": "Possibly dead Python function: record_ab_result"}, "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-24b9996c250e5180", "name": "Possibly dead Python function: list_ab_tests", "shortDescription": {"text": "Possibly dead Python function: list_ab_tests"}, "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-38eee13b18babc78", "name": "Possibly dead Python function: test_all_apis", "shortDescription": {"text": "Possibly dead Python function: test_all_apis"}, "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-1af3e88a66dad238", "name": "Possibly dead Python function: search_jobs_resilient", "shortDescription": {"text": "Possibly dead Python function: search_jobs_resilient"}, "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-11ca34c566ecab0b", "name": "Possibly dead Python function: search_federal_jobs_resilient", "shortDescription": {"text": "Possibly dead Python function: search_federal_jobs_resilient"}, "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-bead75b0f9233e05", "name": "No API endpoints detected", "shortDescription": {"text": "No API endpoints detected"}, "fullDescription": {"text": "The scanner did not find FastAPI/Flask/Express/NestJS/GraphQL/gRPC routes. If this repo exposes APIs, the framework may be unsupported."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e6e94768ce5cfdd2", "name": "Stray `console.log` in TS/JS \u2014 static/nova-auth.js:546", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 static/nova-auth.js:546"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9710c8d059e53154", "name": "No frontend routes/components detected", "shortDescription": {"text": "No frontend routes/components detected"}, "fullDescription": {"text": "No React/Vue/Next routes were found. This is fine for backend-only repos."}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3f3be868dc147017", "name": "Insecure pattern 'cors_wildcard' in app.py:11588", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in app.py:11588"}, "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-be9e48d5ce298ff8", "name": "Insecure pattern 'direct_innerhtml_assignment' in static/applyflow-widget.js:440", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/applyflow-widget.js:440"}, "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-3ba52a0f6de60f85", "name": "Insecure pattern 'direct_innerhtml_assignment' in static/nova-auth.js:208", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/nova-auth.js:208"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-eb14f8736859b076", "name": "Insecure pattern 'insert_adjacent_html' in static/nova-auth.js:223", "shortDescription": {"text": "Insecure pattern 'insert_adjacent_html' in static/nova-auth.js:223"}, "fullDescription": {"text": "Found a known-risky pattern (insert_adjacent_html). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-fbb9d185886cb2b1", "name": "Insecure pattern 'direct_innerhtml_assignment' in static/back-to-suite.js:18", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/back-to-suite.js:18"}, "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-034c1c5b0b0e454d", "name": "Insecure pattern 'direct_innerhtml_assignment' in static/nova-embed-demo.html:504", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/nova-embed-demo.html:504"}, "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-730a32909c44e78c", "name": "Insecure pattern 'direct_innerhtml_assignment' in static/sankey-viz.js:339", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/sankey-viz.js:339"}, "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-94800b82d151c9b5", "name": "Insecure pattern 'direct_innerhtml_assignment' in static/nova-ats-widget.js:308", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/nova-ats-widget.js:308"}, "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-ac52408b7fdce461", "name": "Insecure pattern 'direct_innerhtml_assignment' in static/nova-admin.html:392", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/nova-admin.html:392"}, "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-a3c75c48342e4ad3", "name": "Insecure pattern 'direct_innerhtml_assignment' in static/nova-auth-gate.js:44", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/nova-auth-gate.js:44"}, "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-19efc3dd511215de", "name": "Insecure pattern 'direct_innerhtml_assignment' in static/nova-embed.js:133", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/nova-embed.js:133"}, "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-20d6ae9e1c7b1a5c", "name": "Insecure pattern 'direct_innerhtml_assignment' in static/nova-chat.js:1136", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/nova-chat.js:1136"}, "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-c99ef1efcea591ae", "name": "Insecure pattern 'direct_innerhtml_assignment' in static/js/motion-engine.js:32", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/motion-engine.js:32"}, "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-a955d6682706ee63", "name": "Insecure pattern 'direct_innerhtml_assignment' in static/js/role-cycling.js:176", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/role-cycling.js:176"}, "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-a8751fc1155f5ffd", "name": "Insecure pattern 'direct_innerhtml_assignment' in static/js/nova-toast.js:66", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/nova-toast.js:66"}, "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-175c29d4ad605d41", "name": "Insecure pattern 'direct_innerhtml_assignment' in static/js/story-scroll.js:115", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/story-scroll.js:115"}, "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-a95d185a5549b583", "name": "Insecure pattern 'direct_innerhtml_assignment' in static/js/hub.js:747", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/hub.js:747"}, "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-0bdc1292cab37f22", "name": "Insecure pattern 'direct_innerhtml_assignment' in static/js/platform.js:524", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/platform.js:524"}, "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-d3c3480b4db86a78", "name": "Insecure pattern 'insert_adjacent_html' in static/js/platform.js:838", "shortDescription": {"text": "Insecure pattern 'insert_adjacent_html' in static/js/platform.js:838"}, "fullDescription": {"text": "Found a known-risky pattern (insert_adjacent_html). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-a8657f2b2773ade9", "name": "Insecure pattern 'direct_innerhtml_assignment' in static/js/nova.js:174", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/nova.js:174"}, "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-27924aa79fa4a517", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/upload-artifact@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-cb639d9a10a47b23", "name": "package.json defines install-time lifecycle scripts", "shortDescription": {"text": "package.json defines install-time lifecycle scripts"}, "fullDescription": {"text": "preinstall/install/postinstall/prepare scripts execute during dependency installation. Review them carefully for network calls, obfuscation, shell execution, or credential access."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-37b1843ac7e79b2d", "name": "Very large file: web_scraper_router.py (1874 lines)", "shortDescription": {"text": "Very large file: web_scraper_router.py (1874 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-739219ca8357d472", "name": "Very large file: performance_tracker.py (2118 lines)", "shortDescription": {"text": "Very large file: performance_tracker.py (2118 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-4ccf999367508172", "name": "Very large file: market_signals.py (1517 lines)", "shortDescription": {"text": "Very large file: market_signals.py (1517 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-607f70bfed7e9109", "name": "Very large file: sentry_integration.py (2243 lines)", "shortDescription": {"text": "Very large file: sentry_integration.py (2243 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-851b987a81b0a333", "name": "Very large file: market_pulse.py (2149 lines)", "shortDescription": {"text": "Very large file: market_pulse.py (2149 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-96a674272b37938f", "name": "Very large file: llm_router.py (4729 lines)", "shortDescription": {"text": "Very large file: llm_router.py (4729 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-a92de5d7cc5012c0", "name": "Very large file: api_integrations.py (4174 lines)", "shortDescription": {"text": "Very large file: api_integrations.py (4174 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-2ba77a4b1394ed26", "name": "Very large file: gold_standard.py (4085 lines)", "shortDescription": {"text": "Very large file: gold_standard.py (4085 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-b890974342876831", "name": "Very large file: audit_tool.py (2617 lines)", "shortDescription": {"text": "Very large file: audit_tool.py (2617 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-8bbaf10f48f40fd3", "name": "Very large file: skill_target.py (2567 lines)", "shortDescription": {"text": "Very large file: skill_target.py (2567 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-325cddeb619abb0f", "name": "Very large file: collar_intelligence.py (2237 lines)", "shortDescription": {"text": "Very large file: collar_intelligence.py (2237 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-5728ba0d6fd4d81a", "name": "Very large file: api_portal.py (1661 lines)", "shortDescription": {"text": "Very large file: api_portal.py (1661 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-d301c4d82a291c3c", "name": "Very large file: api_enrichment.py (18774 lines)", "shortDescription": {"text": "Very large file: api_enrichment.py (18774 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-9f91351d0cf10d4e", "name": "Very large file: trend_engine.py (2688 lines)", "shortDescription": {"text": "Very large file: trend_engine.py (2688 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-eeca33614a9bd3b5", "name": "Very large file: ppt_generator.py (10168 lines)", "shortDescription": {"text": "Very large file: ppt_generator.py (10168 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-34ec4b2833f0f5e3", "name": "Very large file: monitoring.py (2867 lines)", "shortDescription": {"text": "Very large file: monitoring.py (2867 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-84123aa79a47369d", "name": "Very large file: app.py (22469 lines)", "shortDescription": {"text": "Very large file: app.py (22469 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-a84d340e9dfa8b35", "name": "Very large file: vector_search.py (2446 lines)", "shortDescription": {"text": "Very large file: vector_search.py (2446 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-073a7c9c98d4b18b", "name": "Very large file: slotops_engine.py (2472 lines)", "shortDescription": {"text": "Very large file: slotops_engine.py (2472 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-37dad060d3db4e02", "name": "Very large file: standardizer.py (1663 lines)", "shortDescription": {"text": "Very large file: standardizer.py (1663 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-030282ae6f4db2c4", "name": "Very large file: resilience_router.py (2302 lines)", "shortDescription": {"text": "Very large file: resilience_router.py (2302 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-616b4c8f73581edc", "name": "Very large file: budget_engine.py (4449 lines)", "shortDescription": {"text": "Very large file: budget_engine.py (4449 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-3a6e14fd5b05a305", "name": "Very large file: data_synthesizer.py (4948 lines)", "shortDescription": {"text": "Very large file: data_synthesizer.py (4948 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-13e5f8c298e72beb", "name": "Very large file: excel_v2.py (7626 lines)", "shortDescription": {"text": "Very large file: excel_v2.py (7626 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-e65a079978ea0631", "name": "Very large file: research.py (8723 lines)", "shortDescription": {"text": "Very large file: research.py (8723 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-472fc842659d11bc", "name": "Very large file: social_plan.py (2579 lines)", "shortDescription": {"text": "Very large file: social_plan.py (2579 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-9b522e08e6948669", "name": "Very large file: data_enrichment.py (1649 lines)", "shortDescription": {"text": "Very large file: data_enrichment.py (1649 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-864e7c71022c18e9", "name": "Very large file: competitive_intel.py (2813 lines)", "shortDescription": {"text": "Very large file: competitive_intel.py (2813 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-5d8791abac8d3961", "name": "Very large file: rag_pipeline.py (1948 lines)", "shortDescription": {"text": "Very large file: rag_pipeline.py (1948 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-63e2a4ff83458764", "name": "Very large file: talent_heatmap.py (2287 lines)", "shortDescription": {"text": "Very large file: talent_heatmap.py (2287 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-f9f18b56cfc778ae", "name": "Very large file: budget_simulator.py (1579 lines)", "shortDescription": {"text": "Very large file: budget_simulator.py (1579 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-b78e1c682ca621d7", "name": "Very large file: market_intel_reports.py (2269 lines)", "shortDescription": {"text": "Very large file: market_intel_reports.py (2269 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-3c0eb8049034137c", "name": "Very large file: applyflow.py (1728 lines)", "shortDescription": {"text": "Very large file: applyflow.py (1728 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-7e18d64ad60175f5", "name": "Very large file: data_matrix_monitor.py (1622 lines)", "shortDescription": {"text": "Very large file: data_matrix_monitor.py (1622 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-838db44ceb3fd141", "name": "Very large file: nova_slack.py (1815 lines)", "shortDescription": {"text": "Very large file: nova_slack.py (1815 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-6f847fb357c72ce7", "name": "Very large file: quick_plan.py (1747 lines)", "shortDescription": {"text": "Very large file: quick_plan.py (1747 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-4f4bbd7681ce7a1d", "name": "Very large file: eval_framework.py (1547 lines)", "shortDescription": {"text": "Very large file: eval_framework.py (1547 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-ab92cb9fa94c1243", "name": "Very large file: hire_signal.py (3096 lines)", "shortDescription": {"text": "Very large file: hire_signal.py (3096 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-221c22e5ffbfa290", "name": "Very large file: joveo_slides_template.py (1454 lines)", "shortDescription": {"text": "Very large file: joveo_slides_template.py (1454 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-4a3558251e40c484", "name": "Very large file: archive/excel_legacy.py (12499 lines)", "shortDescription": {"text": "Very large file: archive/excel_legacy.py (12499 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-c40e731ff92180d4", "name": "Very large file: tests/test_s50_upgrades.py (1278 lines)", "shortDescription": {"text": "Very large file: tests/test_s50_upgrades.py (1278 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-4b06c7eddcf5e47c", "name": "Very large file: tests/test_intl_chatbot_scenarios.py (1320 lines)", "shortDescription": {"text": "Very large file: tests/test_intl_chatbot_scenarios.py (1320 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-641ca135d03a20a7", "name": "Very large file: tests/stress_test_comprehensive.py (1442 lines)", "shortDescription": {"text": "Very large file: tests/stress_test_comprehensive.py (1442 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-de0bae96ee32e4e6", "name": "Very large file: static/nova-chat.js (4297 lines)", "shortDescription": {"text": "Very large file: static/nova-chat.js (4297 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-9083bfdffe0d0d1e", "name": "Very large file: static/js/hub.js (1584 lines)", "shortDescription": {"text": "Very large file: static/js/hub.js (1584 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-fcd6c48cb73817fe", "name": "Very large file: static/js/platform.js (2375 lines)", "shortDescription": {"text": "Very large file: static/js/platform.js (2375 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-e933c5c84b81bbfc", "name": "Very large file: static/js/nova.js (4049 lines)", "shortDescription": {"text": "Very large file: static/js/nova.js (4049 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-51e70abe1b683dc4", "name": "Very large file: docs/rag_implementation_sketch.py (1450 lines)", "shortDescription": {"text": "Very large file: docs/rag_implementation_sketch.py (1450 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-6aa95c4347764b9f", "name": "Very large file: scripts/generate_qc_audit_docx.py (1607 lines)", "shortDescription": {"text": "Very large file: scripts/generate_qc_audit_docx.py (1607 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-9eb0838ae180cf81", "name": "Very large file: scripts/extract_client_plans.py (2310 lines)", "shortDescription": {"text": "Very large file: scripts/extract_client_plans.py (2310 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-167a97faf58f0982", "name": "Very large file: scripts/expand_supabase_tables.py (1371 lines)", "shortDescription": {"text": "Very large file: scripts/expand_supabase_tables.py (1371 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-7da923997e19d95f", "name": "Very large file: routes/health.py (1663 lines)", "shortDescription": {"text": "Very large file: routes/health.py (1663 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-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-3ab5d313dda8e5f9", "name": "Debug logging residue appears in source files", "shortDescription": {"text": "Debug logging residue appears in source files"}, "fullDescription": {"text": "Found 119 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 17 placeholder/mock markers across 8 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-9d79c4077342a7d0", "name": "Runtime service client appears to use placeholder configuration", "shortDescription": {"text": "Runtime service client appears to use placeholder configuration"}, "fullDescription": {"text": "A runtime source file appears to wire Supabase/Firebase/AI/payment-style clients to placeholder URLs, keys, or fallback values. In the Fable corpus this often means the UI/API shape is present while the backend service is not actually configured."}, "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-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. 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-cc55229a7a3c078d", "name": "Agent authority lacks a verifier contract: .mcp.json", "shortDescription": {"text": "Agent authority lacks a verifier contract: .mcp.json"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b10c06af66a5fa7b", "name": "Commented-code block (8 lines) in channel_recommender.py:787", "shortDescription": {"text": "Commented-code block (8 lines) in channel_recommender.py:787"}, "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-41588445d2bdf32e", "name": "Commented-code block (8 lines) in llm_router.py:173", "shortDescription": {"text": "Commented-code block (8 lines) in llm_router.py:173"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-31c9ea7d2e06b494", "name": "Legacy-named symbol `intl_role_benchmarks_v1` in kb_loader.py:295", "shortDescription": {"text": "Legacy-named symbol `intl_role_benchmarks_v1` in kb_loader.py:295"}, "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-0e034747c50e6582", "name": "Commented-code block (5 lines) in kb_loader.py:36", "shortDescription": {"text": "Commented-code block (5 lines) in kb_loader.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-9d0f294bd48fbd02", "name": "Legacy-named symbol `scribe_v2` in elevenlabs_integration.py:428", "shortDescription": {"text": "Legacy-named symbol `scribe_v2` in elevenlabs_integration.py:428"}, "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-a040f4a11f9c4ec7", "name": "Commented-code block (5 lines) in collar_intelligence.py:1216", "shortDescription": {"text": "Commented-code block (5 lines) in collar_intelligence.py:1216"}, "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-9dfb7540df39f984", "name": "Commented-code block (5 lines) in deck_generator.py:269", "shortDescription": {"text": "Commented-code block (5 lines) in deck_generator.py:269"}, "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-bbe863945fbfe155", "name": "Legacy-named symbol `stats_copy` in outcome_pipeline.py:782", "shortDescription": {"text": "Legacy-named symbol `stats_copy` in outcome_pipeline.py:782"}, "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-bfec68fc21595397", "name": "Legacy-named symbol `BLS_v1` in api_enrichment.py:930", "shortDescription": {"text": "Legacy-named symbol `BLS_v1` in api_enrichment.py:930"}, "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-0f5b095e926b7b31", "name": "Commented-code block (5 lines) in api_enrichment.py:134", "shortDescription": {"text": "Commented-code block (5 lines) in api_enrichment.py:134"}, "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-8fb28bb1df990dc6", "name": "Commented-code block (5 lines) in trend_engine.py:43", "shortDescription": {"text": "Commented-code block (5 lines) in trend_engine.py:43"}, "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-da69211ce8cc9883", "name": "Commented-code block (12 lines) in benchmark_registry.py:67", "shortDescription": {"text": "Commented-code block (12 lines) in benchmark_registry.py:67"}, "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-f876adbcf30ff72d", "name": "Commented-code block (9 lines) in ppt_generator.py:828", "shortDescription": {"text": "Commented-code block (9 lines) in ppt_generator.py:828"}, "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-099e9e9fe6a08784", "name": "Commented-code block (6 lines) in monitoring.py:946", "shortDescription": {"text": "Commented-code block (6 lines) in monitoring.py:946"}, "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-e2c8bf3590c79612", "name": "Legacy-named symbol `excel_v2` in app.py:3547", "shortDescription": {"text": "Legacy-named symbol `excel_v2` in app.py:3547"}, "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-b8937c3c97afa37b", "name": "Commented-code block (7 lines) in app.py:72", "shortDescription": {"text": "Commented-code block (7 lines) in app.py:72"}, "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-3e71bf2c437791ce", "name": "Stub function `get_persistence` (body is just `pass`/`return`) \u2014 app.py:5708", "shortDescription": {"text": "Stub function `get_persistence` (body is just `pass`/`return`) \u2014 app.py:5708"}, "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-fc6582114229a593", "name": "Legacy-named symbol `excel_v2` in plan_schema.py:18", "shortDescription": {"text": "Legacy-named symbol `excel_v2` in plan_schema.py:18"}, "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-ed6abb489d8cd56a", "name": "Commented-code block (7 lines) in vector_search.py:90", "shortDescription": {"text": "Commented-code block (7 lines) in vector_search.py:90"}, "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-8b46752486ede56c", "name": "Commented-code block (7 lines) in pdf_report.py:231", "shortDescription": {"text": "Commented-code block (7 lines) in pdf_report.py:231"}, "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-cbd1e57c7c00e517", "name": "Legacy-named symbol `slotops_baselines_v1` in slotops_engine.py:199", "shortDescription": {"text": "Legacy-named symbol `slotops_baselines_v1` in slotops_engine.py:199"}, "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-6e893f806b3c0e4c", "name": "Commented-code block (5 lines) in auto_qc.py:45", "shortDescription": {"text": "Commented-code block (5 lines) in auto_qc.py:45"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-23e4f0da9a36e017", "name": "Commented-code block (9 lines) in standardizer.py:44", "shortDescription": {"text": "Commented-code block (9 lines) in standardizer.py:44"}, "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-6847c4dfa10315ad", "name": "Commented-code block (5 lines) in budget_engine.py:56", "shortDescription": {"text": "Commented-code block (5 lines) in budget_engine.py:56"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2029f1cbf2a73570", "name": "Legacy-named symbol `excel_v2` in cited_data_block.py:9", "shortDescription": {"text": "Legacy-named symbol `excel_v2` in cited_data_block.py:9"}, "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-79ed0583bbb0045b", "name": "Stub function `get_local_salary_summary` (body is just `pass`/`return`) \u2014 cited_data_block.py:34", "shortDescription": {"text": "Stub function `get_local_salary_summary` (body is just `pass`/`return`) \u2014 cited_data_block.py:34"}, "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-6a878f1ca0953fe9", "name": "Legacy-named symbol `intl_role_benchmarks_v1` in plan_currency.py:13", "shortDescription": {"text": "Legacy-named symbol `intl_role_benchmarks_v1` in plan_currency.py:13"}, "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-c4e1cdc59679698f", "name": "Legacy-named symbol `intl_role_benchmarks_v1` in intl_benchmark_lookup.py:3", "shortDescription": {"text": "Legacy-named symbol `intl_role_benchmarks_v1` in intl_benchmark_lookup.py:3"}, "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-f744e0f5c7b8a3f7", "name": "Legacy-named symbol `ch_copy` in excel_v2.py:2010", "shortDescription": {"text": "Legacy-named symbol `ch_copy` in excel_v2.py:2010"}, "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-e162297675abd781", "name": "Commented-code block (5 lines) in excel_v2.py:2513", "shortDescription": {"text": "Commented-code block (5 lines) in excel_v2.py:2513"}, "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-625e950795a1f2d6", "name": "Commented-code block (7 lines) in wsgi.py:161", "shortDescription": {"text": "Commented-code block (7 lines) in wsgi.py:161"}, "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-b80c3df28cb790ca", "name": "Legacy-named symbol `headline_copy` in social_plan.py:1606", "shortDescription": {"text": "Legacy-named symbol `headline_copy` in social_plan.py:1606"}, "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-dffee70893c8a48e", "name": "Commented-code block (10 lines) in data_enrichment.py:1425", "shortDescription": {"text": "Commented-code block (10 lines) in data_enrichment.py:1425"}, "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-6886b495cf5772d9", "name": "Legacy-named symbol `excel_v2` in competitive_intel.py:1469", "shortDescription": {"text": "Legacy-named symbol `excel_v2` in competitive_intel.py:1469"}, "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-66fd464187d26e45", "name": "Commented-code block (5 lines) in competitive_intel.py:272", "shortDescription": {"text": "Commented-code block (5 lines) in competitive_intel.py:272"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c8f51d02d474dc94", "name": "Legacy-named symbol `nova_knowledge_v2` in rag_pipeline.py:8", "shortDescription": {"text": "Legacy-named symbol `nova_knowledge_v2` in rag_pipeline.py:8"}, "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-9ca2b36010d8903b", "name": "Legacy-named symbol `kb_backup` in supabase_cache.py:858", "shortDescription": {"text": "Legacy-named symbol `kb_backup` in supabase_cache.py:858"}, "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-1d8c6a48dafb57e7", "name": "Commented-code block (7 lines) in supabase_cache.py:392", "shortDescription": {"text": "Commented-code block (7 lines) in supabase_cache.py:392"}, "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-1ef0a5eb6fa019db", "name": "Commented-code block (6 lines) in role_taxonomy.py:17", "shortDescription": {"text": "Commented-code block (6 lines) in role_taxonomy.py:17"}, "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-3b479d98431b325e", "name": "Commented-code block (8 lines) in data_matrix_monitor.py:85", "shortDescription": {"text": "Commented-code block (8 lines) in data_matrix_monitor.py:85"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ed965b852eb1db29", "name": "Commented-code block (6 lines) in alert_manager.py:69", "shortDescription": {"text": "Commented-code block (6 lines) in alert_manager.py:69"}, "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-b5553e4626342a5a", "name": "Commented-code block (7 lines) in pdf_generator.py:641", "shortDescription": {"text": "Commented-code block (7 lines) in pdf_generator.py:641"}, "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-bbc1867ab00b77b7", "name": "Network/subprocess call without timeout or try/except \u2014 http_pool.py:4", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 http_pool.py:4"}, "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-61787971786e39da", "name": "Legacy-named symbol `intl_role_benchmarks_v1` in joveo_slides_template.py:535", "shortDescription": {"text": "Legacy-named symbol `intl_role_benchmarks_v1` in joveo_slides_template.py:535"}, "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-93179c9132ea7e93", "name": "Commented-code block (6 lines) in joveo_slides_template.py:83", "shortDescription": {"text": "Commented-code block (6 lines) in joveo_slides_template.py:83"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e49bdc24a7ef6a89", "name": "Stub function `get_cpa_median_usd` (body is just `pass`/`return`) \u2014 joveo_slides_template.py:45", "shortDescription": {"text": "Stub function `get_cpa_median_usd` (body is just `pass`/`return`) \u2014 joveo_slides_template.py:45"}, "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-e060cb0c12efd8aa", "name": "Legacy-named symbol `excel_v2` in archive/excel_legacy.py:4", "shortDescription": {"text": "Legacy-named symbol `excel_v2` in archive/excel_legacy.py:4"}, "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-597b12da7b49eaea", "name": "Legacy-named symbol `intl_role_benchmarks_v1` in tests/test_plan_currency.py:123", "shortDescription": {"text": "Legacy-named symbol `intl_role_benchmarks_v1` in tests/test_plan_currency.py:123"}, "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-766e87e0231f02c4", "name": "Commented-code block (5 lines) in tests/test_us_regression_safety.py:282", "shortDescription": {"text": "Commented-code block (5 lines) in tests/test_us_regression_safety.py:282"}, "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-b001736f1d4616a5", "name": "Commented-code block (5 lines) in tests/test_s50_upgrades.py:1125", "shortDescription": {"text": "Commented-code block (5 lines) in tests/test_s50_upgrades.py:1125"}, "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-5c697d61bdad0632", "name": "Legacy-named symbol `generate_excel_v2` in tests/test_excel_provenance.py:8", "shortDescription": {"text": "Legacy-named symbol `generate_excel_v2` in tests/test_excel_provenance.py:8"}, "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-2747949044258b76", "name": "Commented-code block (5 lines) in static/nova-auth.js:86", "shortDescription": {"text": "Commented-code block (5 lines) in static/nova-auth.js:86"}, "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-89c7a43838f3ab38", "name": "`fetch()` without try/.catch or AbortSignal \u2014 static/nova-auth-gate.js:325", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 static/nova-auth-gate.js:325"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c2846feea9478428", "name": "`fetch()` without try/.catch or AbortSignal \u2014 static/nova-embed.js:242", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 static/nova-embed.js:242"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-8f0c9af3b3cc244f", "name": "Legacy-named symbol `code_copy` in static/nova-chat.js:814", "shortDescription": {"text": "Legacy-named symbol `code_copy` in static/nova-chat.js:814"}, "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-fe27d8be7fe6ae80", "name": "Commented-code block (6 lines) in static/nova-chat.js:103", "shortDescription": {"text": "Commented-code block (6 lines) in static/nova-chat.js:103"}, "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-d52bf28b1835d288", "name": "`fetch()` without try/.catch or AbortSignal \u2014 static/nova-chat.js:2582", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 static/nova-chat.js:2582"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-416ced982d6b18b0", "name": "Legacy-named symbol `nova_context_v2` in static/js/platform.js:279", "shortDescription": {"text": "Legacy-named symbol `nova_context_v2` in static/js/platform.js:279"}, "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-e0424822eae5aa79", "name": "`fetch()` without try/.catch or AbortSignal \u2014 static/js/platform.js:775", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 static/js/platform.js:775"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e863455ad4061ce1", "name": "Commented-code block (7 lines) in static/js/nova.js:653", "shortDescription": {"text": "Commented-code block (7 lines) in static/js/nova.js:653"}, "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-a586184db7c01938", "name": "`fetch()` without try/.catch or AbortSignal \u2014 static/js/nova.js:217", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 static/js/nova.js:217"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9f5e750587d7e3b8", "name": "`fetch()` without try/.catch or AbortSignal \u2014 static/js/campaign-intel-fetch.js:69", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 static/js/campaign-intel-fetch.js:69"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-cfed919f0191fbf1", "name": "Legacy-named symbol `nova_knowledge_v2` in docs/rag_implementation_sketch.py:81", "shortDescription": {"text": "Legacy-named symbol `nova_knowledge_v2` in docs/rag_implementation_sketch.py:81"}, "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-159efa6ed08d673b", "name": "Legacy-named symbol `excel_v2` in scripts/render_sample_outputs.py:98", "shortDescription": {"text": "Legacy-named symbol `excel_v2` in scripts/render_sample_outputs.py:98"}, "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-4f575225ec17a091", "name": "Legacy-named symbol `old_backup` in scripts/backup_kb.py:112", "shortDescription": {"text": "Legacy-named symbol `old_backup` in scripts/backup_kb.py:112"}, "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-58aa0659b7bfc648", "name": "Legacy-named symbol `_write_backup` in scripts/migrate_voyage_4.py:318", "shortDescription": {"text": "Legacy-named symbol `_write_backup` in scripts/migrate_voyage_4.py:318"}, "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-fbdc32562a3e8785", "name": "Legacy-named symbol `nova_knowledge_v2` in scripts/rag_backfill.py:4", "shortDescription": {"text": "Legacy-named symbol `nova_knowledge_v2` in scripts/rag_backfill.py:4"}, "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-c952dd9f14ebc156", "name": "Commented-code block (5 lines) in scripts/rag_backfill.py:88", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/rag_backfill.py:88"}, "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-9f23970cda1fcc80", "name": "Legacy-named symbol `tier_3_old` in scripts/extract_client_plans.py:214", "shortDescription": {"text": "Legacy-named symbol `tier_3_old` in scripts/extract_client_plans.py:214"}, "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-b164b512b98c5941", "name": "Commented-code block (11 lines) in routes/competitive.py:71", "shortDescription": {"text": "Commented-code block (11 lines) in routes/competitive.py:71"}, "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-20397b9d153ca2c4", "name": "Legacy-named symbol `eleven_monolingual_v1` in routes/tts.py:21", "shortDescription": {"text": "Legacy-named symbol `eleven_monolingual_v1` in routes/tts.py:21"}, "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-207e294e81723242", "name": "Legacy-named symbol `markdown_v2` in apis/scrapers/crawl4ai_client.py:293", "shortDescription": {"text": "Legacy-named symbol `markdown_v2` in apis/scrapers/crawl4ai_client.py:293"}, "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-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:\nweb_scraper_router.py:record_success, web_scraper_router.py:record, web_scraper_router.py:record\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2c04133e54348533", "name": "Near-duplicate function bodies in 2 places", "shortDescription": {"text": "Near-duplicate function bodies in 2 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\nweb_scraper_router.py:get_stats, web_scraper_router.py:get_stats\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:\napi_integrations.py:search_jobs, api_integrations.py:search_jobs, api_integrations.py:search_jobs, api_integrations.py:search_jobs\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}]}}, "automationDetails": {"id": "repobility/19583"}, "properties": {"repository": "shubhamsingh-cell/media-plan-generator", "repoUrl": "https://github.com/shubhamsingh-cell/media-plan-generator", "branch": "main"}, "results": [{"ruleId": "scanner-239d2590f6b00276", "level": "note", "message": {"text": "Possibly dead Python function: handle_starttag"}, "properties": {"repobilityId": "3bf216d149959ebf", "scanner": "scanner-primary", "fingerprint": "239d2590f6b00276", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "web_scraper_router.py:1307"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-8391bff8e447d3e6", "level": "note", "message": {"text": "Possibly dead Python function: handle_endtag"}, "properties": {"repobilityId": "7eb6f3decafc1766", "scanner": "scanner-primary", "fingerprint": "8391bff8e447d3e6", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "web_scraper_router.py:1317"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-400d4325090dcbb5", "level": "note", "message": {"text": "Possibly dead Python function: handle_data"}, "properties": {"repobilityId": "3a673a278f4fc1e6", "scanner": "scanner-primary", "fingerprint": "400d4325090dcbb5", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "web_scraper_router.py:1334"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-2ca56bb8d370e8de", "level": "note", "message": {"text": "Possibly dead Python function: check_content_changed"}, "properties": {"repobilityId": "72efedf0554d1832", "scanner": "scanner-primary", "fingerprint": "2ca56bb8d370e8de", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "web_scraper_router.py:1683"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-ee1b189d5a1583fb", "level": "note", "message": {"text": "Possibly dead Python function: format_recommendation_text"}, "properties": {"repobilityId": "098d0726662f8cb9", "scanner": "scanner-primary", "fingerprint": "ee1b189d5a1583fb", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "channel_recommender.py:1048"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a698ed69cb851b2e", "level": "note", "message": {"text": "Possibly dead Python function: generate_postmortem"}, "properties": {"repobilityId": "9008914f2b6e898b", "scanner": "scanner-primary", "fingerprint": "a698ed69cb851b2e", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "sentry_integration.py:417"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-de1f7e4d1ee0aa14", "level": "note", "message": {"text": "Possibly dead Python function: start_proactive_health"}, "properties": {"repobilityId": "3aef07c780d31910", "scanner": "scanner-primary", "fingerprint": "de1f7e4d1ee0aa14", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "sentry_integration.py:2224"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a968e96983041f48", "level": "note", "message": {"text": "Possibly dead Python function: stop_proactive_health"}, "properties": {"repobilityId": "312bebd4eb4f26ba", "scanner": "scanner-primary", "fingerprint": "a968e96983041f48", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "sentry_integration.py:2232"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-04120eb4ecee725f", "level": "note", "message": {"text": "Possibly dead Python function: send_brief_email"}, "properties": {"repobilityId": "172a865b90aaf13b", "scanner": "scanner-primary", "fingerprint": "04120eb4ecee725f", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "morning_brief.py:239"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e52782de85b71e7a", "level": "note", "message": {"text": "Possibly dead Python function: send_pulse_email"}, "properties": {"repobilityId": "3a00aacfd7b9d6cd", "scanner": "scanner-primary", "fingerprint": "e52782de85b71e7a", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "market_pulse.py:2087"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-ac6c85e9eb60ba02", "level": "note", "message": {"text": "Possibly dead Python function: set_ab_test"}, "properties": {"repobilityId": "caa2aa3f409102dc", "scanner": "scanner-primary", "fingerprint": "ac6c85e9eb60ba02", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "llm_router.py:1861"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a37c58171f28bb87", "level": "note", "message": {"text": "Possibly dead Python function: record_ab_result"}, "properties": {"repobilityId": "7afbb058f544b2a4", "scanner": "scanner-primary", "fingerprint": "a37c58171f28bb87", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "llm_router.py:1899"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-24b9996c250e5180", "level": "note", "message": {"text": "Possibly dead Python function: list_ab_tests"}, "properties": {"repobilityId": "f19fed4055ca9dab", "scanner": "scanner-primary", "fingerprint": "24b9996c250e5180", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "llm_router.py:1958"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-38eee13b18babc78", "level": "note", "message": {"text": "Possibly dead Python function: test_all_apis"}, "properties": {"repobilityId": "0749a666163e3962", "scanner": "scanner-primary", "fingerprint": "38eee13b18babc78", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api_integrations.py:3540"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-1af3e88a66dad238", "level": "note", "message": {"text": "Possibly dead Python function: search_jobs_resilient"}, "properties": {"repobilityId": "3cdafc24095eb13c", "scanner": "scanner-primary", "fingerprint": "1af3e88a66dad238", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api_integrations.py:3754"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-11ca34c566ecab0b", "level": "note", "message": {"text": "Possibly dead Python function: search_federal_jobs_resilient"}, "properties": {"repobilityId": "c7cbaafc93a5acec", "scanner": "scanner-primary", "fingerprint": "11ca34c566ecab0b", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api_integrations.py:3812"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-bead75b0f9233e05", "level": "none", "message": {"text": "No API endpoints detected"}, "properties": {"repobilityId": "0f8bb852027c38f8", "scanner": "scanner-primary", "fingerprint": "bead75b0f9233e05", "layer": "api", "severity": "info", "confidence": 1.0, "tags": ["coverage"]}}, {"ruleId": "scanner-e6e94768ce5cfdd2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 static/nova-auth.js:546"}, "properties": {"repobilityId": "7e227f361af69b21", "scanner": "scanner-primary", "fingerprint": "e6e94768ce5cfdd2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"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-3f3be868dc147017", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in app.py:11588"}, "properties": {"repobilityId": "a4402f0f4770da42", "scanner": "scanner-primary", "fingerprint": "3f3be868dc147017", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app.py"}, "region": {"startLine": 11588}}}]}, {"ruleId": "scanner-be9e48d5ce298ff8", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/applyflow-widget.js:440"}, "properties": {"repobilityId": "7b61da44e4d401be", "scanner": "scanner-primary", "fingerprint": "be9e48d5ce298ff8", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "static/applyflow-widget.js"}, "region": {"startLine": 440}}}]}, {"ruleId": "scanner-3ba52a0f6de60f85", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/nova-auth.js:208"}, "properties": {"repobilityId": "5b63b458c31c819b", "scanner": "scanner-primary", "fingerprint": "3ba52a0f6de60f85", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "static/nova-auth.js"}, "region": {"startLine": 208}}}]}, {"ruleId": "scanner-eb14f8736859b076", "level": "warning", "message": {"text": "Insecure pattern 'insert_adjacent_html' in static/nova-auth.js:223"}, "properties": {"repobilityId": "46be73c8dfc452b8", "scanner": "scanner-primary", "fingerprint": "eb14f8736859b076", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "insert_adjacent_html"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "static/nova-auth.js"}, "region": {"startLine": 223}}}]}, {"ruleId": "scanner-fbb9d185886cb2b1", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/back-to-suite.js:18"}, "properties": {"repobilityId": "0aa87303f534e5c1", "scanner": "scanner-primary", "fingerprint": "fbb9d185886cb2b1", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "static/back-to-suite.js"}, "region": {"startLine": 18}}}]}, {"ruleId": "scanner-034c1c5b0b0e454d", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/nova-embed-demo.html:504"}, "properties": {"repobilityId": "4eee2f54b9667180", "scanner": "scanner-primary", "fingerprint": "034c1c5b0b0e454d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "static/nova-embed-demo.html"}, "region": {"startLine": 504}}}]}, {"ruleId": "scanner-730a32909c44e78c", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/sankey-viz.js:339"}, "properties": {"repobilityId": "ecadab984c38a555", "scanner": "scanner-primary", "fingerprint": "730a32909c44e78c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "static/sankey-viz.js"}, "region": {"startLine": 339}}}]}, {"ruleId": "scanner-94800b82d151c9b5", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/nova-ats-widget.js:308"}, "properties": {"repobilityId": "851717362eebaa93", "scanner": "scanner-primary", "fingerprint": "94800b82d151c9b5", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "static/nova-ats-widget.js"}, "region": {"startLine": 308}}}]}, {"ruleId": "scanner-ac52408b7fdce461", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/nova-admin.html:392"}, "properties": {"repobilityId": "86a2402418d6da3e", "scanner": "scanner-primary", "fingerprint": "ac52408b7fdce461", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "static/nova-admin.html"}, "region": {"startLine": 392}}}]}, {"ruleId": "scanner-a3c75c48342e4ad3", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/nova-auth-gate.js:44"}, "properties": {"repobilityId": "11c0cab14212ff84", "scanner": "scanner-primary", "fingerprint": "a3c75c48342e4ad3", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "static/nova-auth-gate.js"}, "region": {"startLine": 44}}}]}, {"ruleId": "scanner-19efc3dd511215de", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/nova-embed.js:133"}, "properties": {"repobilityId": "6fc0406bd7c5711b", "scanner": "scanner-primary", "fingerprint": "19efc3dd511215de", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "static/nova-embed.js"}, "region": {"startLine": 133}}}]}, {"ruleId": "scanner-20d6ae9e1c7b1a5c", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/nova-chat.js:1136"}, "properties": {"repobilityId": "2f2fa7dba00d2ff3", "scanner": "scanner-primary", "fingerprint": "20d6ae9e1c7b1a5c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "static/nova-chat.js"}, "region": {"startLine": 1136}}}]}, {"ruleId": "scanner-c99ef1efcea591ae", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/motion-engine.js:32"}, "properties": {"repobilityId": "b95e1243868b7334", "scanner": "scanner-primary", "fingerprint": "c99ef1efcea591ae", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "static/js/motion-engine.js"}, "region": {"startLine": 32}}}]}, {"ruleId": "scanner-a955d6682706ee63", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/role-cycling.js:176"}, "properties": {"repobilityId": "cc7f50cff0a17924", "scanner": "scanner-primary", "fingerprint": "a955d6682706ee63", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "static/js/role-cycling.js"}, "region": {"startLine": 176}}}]}, {"ruleId": "scanner-a8751fc1155f5ffd", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/nova-toast.js:66"}, "properties": {"repobilityId": "e7105a3feace6da1", "scanner": "scanner-primary", "fingerprint": "a8751fc1155f5ffd", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "static/js/nova-toast.js"}, "region": {"startLine": 66}}}]}, {"ruleId": "scanner-175c29d4ad605d41", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/story-scroll.js:115"}, "properties": {"repobilityId": "4db362d6acb02c1f", "scanner": "scanner-primary", "fingerprint": "175c29d4ad605d41", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "static/js/story-scroll.js"}, "region": {"startLine": 115}}}]}, {"ruleId": "scanner-a95d185a5549b583", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/hub.js:747"}, "properties": {"repobilityId": "7de5045351e865e4", "scanner": "scanner-primary", "fingerprint": "a95d185a5549b583", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "static/js/hub.js"}, "region": {"startLine": 747}}}]}, {"ruleId": "scanner-0bdc1292cab37f22", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/platform.js:524"}, "properties": {"repobilityId": "eaa0dcc594adbfa4", "scanner": "scanner-primary", "fingerprint": "0bdc1292cab37f22", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "static/js/platform.js"}, "region": {"startLine": 524}}}]}, {"ruleId": "scanner-d3c3480b4db86a78", "level": "warning", "message": {"text": "Insecure pattern 'insert_adjacent_html' in static/js/platform.js:838"}, "properties": {"repobilityId": "c536868387056849", "scanner": "scanner-primary", "fingerprint": "d3c3480b4db86a78", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "insert_adjacent_html"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "static/js/platform.js"}, "region": {"startLine": 838}}}]}, {"ruleId": "scanner-a8657f2b2773ade9", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/nova.js:174"}, "properties": {"repobilityId": "09162aecfee8fa9e", "scanner": "scanner-primary", "fingerprint": "a8657f2b2773ade9", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "static/js/nova.js"}, "region": {"startLine": 174}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "bd7f3c1c34d83159", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 79}}}]}, {"ruleId": "scanner-cb639d9a10a47b23", "level": "note", "message": {"text": "package.json defines install-time lifecycle scripts"}, "properties": {"repobilityId": "b86179956da3a4a8", "scanner": "scanner-primary", "fingerprint": "cb639d9a10a47b23", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "npm", "install-scripts"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-37b1843ac7e79b2d", "level": "note", "message": {"text": "Very large file: web_scraper_router.py (1874 lines)"}, "properties": {"repobilityId": "54ef9747c402e87f", "scanner": "scanner-primary", "fingerprint": "37b1843ac7e79b2d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-739219ca8357d472", "level": "note", "message": {"text": "Very large file: performance_tracker.py (2118 lines)"}, "properties": {"repobilityId": "17b564f0d1abd789", "scanner": "scanner-primary", "fingerprint": "739219ca8357d472", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-4ccf999367508172", "level": "note", "message": {"text": "Very large file: market_signals.py (1517 lines)"}, "properties": {"repobilityId": "00bad07577b2fb77", "scanner": "scanner-primary", "fingerprint": "4ccf999367508172", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-607f70bfed7e9109", "level": "note", "message": {"text": "Very large file: sentry_integration.py (2243 lines)"}, "properties": {"repobilityId": "a7f510decb4de78e", "scanner": "scanner-primary", "fingerprint": "607f70bfed7e9109", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-851b987a81b0a333", "level": "note", "message": {"text": "Very large file: market_pulse.py (2149 lines)"}, "properties": {"repobilityId": "811d2e89902f6d30", "scanner": "scanner-primary", "fingerprint": "851b987a81b0a333", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-96a674272b37938f", "level": "note", "message": {"text": "Very large file: llm_router.py (4729 lines)"}, "properties": {"repobilityId": "2f70b0463ffa12c7", "scanner": "scanner-primary", "fingerprint": "96a674272b37938f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-a92de5d7cc5012c0", "level": "note", "message": {"text": "Very large file: api_integrations.py (4174 lines)"}, "properties": {"repobilityId": "5e6ab2cbeb953058", "scanner": "scanner-primary", "fingerprint": "a92de5d7cc5012c0", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-2ba77a4b1394ed26", "level": "note", "message": {"text": "Very large file: gold_standard.py (4085 lines)"}, "properties": {"repobilityId": "e067951807f120a0", "scanner": "scanner-primary", "fingerprint": "2ba77a4b1394ed26", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-b890974342876831", "level": "note", "message": {"text": "Very large file: audit_tool.py (2617 lines)"}, "properties": {"repobilityId": "124abeb81796c2fc", "scanner": "scanner-primary", "fingerprint": "b890974342876831", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-8bbaf10f48f40fd3", "level": "note", "message": {"text": "Very large file: skill_target.py (2567 lines)"}, "properties": {"repobilityId": "31fca606b675d951", "scanner": "scanner-primary", "fingerprint": "8bbaf10f48f40fd3", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-325cddeb619abb0f", "level": "note", "message": {"text": "Very large file: collar_intelligence.py (2237 lines)"}, "properties": {"repobilityId": "1bf3e16785e6bc15", "scanner": "scanner-primary", "fingerprint": "325cddeb619abb0f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-5728ba0d6fd4d81a", "level": "note", "message": {"text": "Very large file: api_portal.py (1661 lines)"}, "properties": {"repobilityId": "796856af1ad0c584", "scanner": "scanner-primary", "fingerprint": "5728ba0d6fd4d81a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-d301c4d82a291c3c", "level": "note", "message": {"text": "Very large file: api_enrichment.py (18774 lines)"}, "properties": {"repobilityId": "cc910aaafa682118", "scanner": "scanner-primary", "fingerprint": "d301c4d82a291c3c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-9f91351d0cf10d4e", "level": "note", "message": {"text": "Very large file: trend_engine.py (2688 lines)"}, "properties": {"repobilityId": "59afc26bf7713c1e", "scanner": "scanner-primary", "fingerprint": "9f91351d0cf10d4e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-eeca33614a9bd3b5", "level": "note", "message": {"text": "Very large file: ppt_generator.py (10168 lines)"}, "properties": {"repobilityId": "00ab8df9f1637160", "scanner": "scanner-primary", "fingerprint": "eeca33614a9bd3b5", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-34ec4b2833f0f5e3", "level": "note", "message": {"text": "Very large file: monitoring.py (2867 lines)"}, "properties": {"repobilityId": "981a77e91d6105ae", "scanner": "scanner-primary", "fingerprint": "34ec4b2833f0f5e3", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-84123aa79a47369d", "level": "note", "message": {"text": "Very large file: app.py (22469 lines)"}, "properties": {"repobilityId": "5a74e6652f3a10d4", "scanner": "scanner-primary", "fingerprint": "84123aa79a47369d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-a84d340e9dfa8b35", "level": "note", "message": {"text": "Very large file: vector_search.py (2446 lines)"}, "properties": {"repobilityId": "7fcd055ee0cf3510", "scanner": "scanner-primary", "fingerprint": "a84d340e9dfa8b35", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-073a7c9c98d4b18b", "level": "note", "message": {"text": "Very large file: slotops_engine.py (2472 lines)"}, "properties": {"repobilityId": "2de01919f046eb58", "scanner": "scanner-primary", "fingerprint": "073a7c9c98d4b18b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-37dad060d3db4e02", "level": "note", "message": {"text": "Very large file: standardizer.py (1663 lines)"}, "properties": {"repobilityId": "7ac3bb20c95513db", "scanner": "scanner-primary", "fingerprint": "37dad060d3db4e02", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-030282ae6f4db2c4", "level": "note", "message": {"text": "Very large file: resilience_router.py (2302 lines)"}, "properties": {"repobilityId": "dab2338bd46c7155", "scanner": "scanner-primary", "fingerprint": "030282ae6f4db2c4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-616b4c8f73581edc", "level": "note", "message": {"text": "Very large file: budget_engine.py (4449 lines)"}, "properties": {"repobilityId": "be76e501f9c8d074", "scanner": "scanner-primary", "fingerprint": "616b4c8f73581edc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-3a6e14fd5b05a305", "level": "note", "message": {"text": "Very large file: data_synthesizer.py (4948 lines)"}, "properties": {"repobilityId": "7c44532be2d2422b", "scanner": "scanner-primary", "fingerprint": "3a6e14fd5b05a305", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-13e5f8c298e72beb", "level": "note", "message": {"text": "Very large file: excel_v2.py (7626 lines)"}, "properties": {"repobilityId": "51025846d94d368d", "scanner": "scanner-primary", "fingerprint": "13e5f8c298e72beb", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-e65a079978ea0631", "level": "note", "message": {"text": "Very large file: research.py (8723 lines)"}, "properties": {"repobilityId": "663b685423f8949f", "scanner": "scanner-primary", "fingerprint": "e65a079978ea0631", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-472fc842659d11bc", "level": "note", "message": {"text": "Very large file: social_plan.py (2579 lines)"}, "properties": {"repobilityId": "38cdaa38a3899ec3", "scanner": "scanner-primary", "fingerprint": "472fc842659d11bc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-9b522e08e6948669", "level": "note", "message": {"text": "Very large file: data_enrichment.py (1649 lines)"}, "properties": {"repobilityId": "0d69bc89b111abf8", "scanner": "scanner-primary", "fingerprint": "9b522e08e6948669", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-864e7c71022c18e9", "level": "note", "message": {"text": "Very large file: competitive_intel.py (2813 lines)"}, "properties": {"repobilityId": "5e45acfa69f6bc07", "scanner": "scanner-primary", "fingerprint": "864e7c71022c18e9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-5d8791abac8d3961", "level": "note", "message": {"text": "Very large file: rag_pipeline.py (1948 lines)"}, "properties": {"repobilityId": "52188eb57a62dfc8", "scanner": "scanner-primary", "fingerprint": "5d8791abac8d3961", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-63e2a4ff83458764", "level": "note", "message": {"text": "Very large file: talent_heatmap.py (2287 lines)"}, "properties": {"repobilityId": "3d820331531ebd85", "scanner": "scanner-primary", "fingerprint": "63e2a4ff83458764", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-f9f18b56cfc778ae", "level": "note", "message": {"text": "Very large file: budget_simulator.py (1579 lines)"}, "properties": {"repobilityId": "317e312c47d2021e", "scanner": "scanner-primary", "fingerprint": "f9f18b56cfc778ae", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-b78e1c682ca621d7", "level": "note", "message": {"text": "Very large file: market_intel_reports.py (2269 lines)"}, "properties": {"repobilityId": "818102d3e6c9f787", "scanner": "scanner-primary", "fingerprint": "b78e1c682ca621d7", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-3c0eb8049034137c", "level": "note", "message": {"text": "Very large file: applyflow.py (1728 lines)"}, "properties": {"repobilityId": "acfa66c647cd34cd", "scanner": "scanner-primary", "fingerprint": "3c0eb8049034137c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-7e18d64ad60175f5", "level": "note", "message": {"text": "Very large file: data_matrix_monitor.py (1622 lines)"}, "properties": {"repobilityId": "81099c51e230bfc1", "scanner": "scanner-primary", "fingerprint": "7e18d64ad60175f5", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-838db44ceb3fd141", "level": "note", "message": {"text": "Very large file: nova_slack.py (1815 lines)"}, "properties": {"repobilityId": "327fc807cf69be5c", "scanner": "scanner-primary", "fingerprint": "838db44ceb3fd141", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-6f847fb357c72ce7", "level": "note", "message": {"text": "Very large file: quick_plan.py (1747 lines)"}, "properties": {"repobilityId": "6898b323cb774372", "scanner": "scanner-primary", "fingerprint": "6f847fb357c72ce7", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-4f4bbd7681ce7a1d", "level": "note", "message": {"text": "Very large file: eval_framework.py (1547 lines)"}, "properties": {"repobilityId": "8494e0bb67a5d302", "scanner": "scanner-primary", "fingerprint": "4f4bbd7681ce7a1d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ab92cb9fa94c1243", "level": "note", "message": {"text": "Very large file: hire_signal.py (3096 lines)"}, "properties": {"repobilityId": "9e7133535b6d61d5", "scanner": "scanner-primary", "fingerprint": "ab92cb9fa94c1243", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-221c22e5ffbfa290", "level": "note", "message": {"text": "Very large file: joveo_slides_template.py (1454 lines)"}, "properties": {"repobilityId": "d4c9474735e819ae", "scanner": "scanner-primary", "fingerprint": "221c22e5ffbfa290", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-4a3558251e40c484", "level": "note", "message": {"text": "Very large file: archive/excel_legacy.py (12499 lines)"}, "properties": {"repobilityId": "dc18f85cfde630b3", "scanner": "scanner-primary", "fingerprint": "4a3558251e40c484", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-c40e731ff92180d4", "level": "note", "message": {"text": "Very large file: tests/test_s50_upgrades.py (1278 lines)"}, "properties": {"repobilityId": "bb7e2acebc8d765e", "scanner": "scanner-primary", "fingerprint": "c40e731ff92180d4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-4b06c7eddcf5e47c", "level": "note", "message": {"text": "Very large file: tests/test_intl_chatbot_scenarios.py (1320 lines)"}, "properties": {"repobilityId": "c199436e28103268", "scanner": "scanner-primary", "fingerprint": "4b06c7eddcf5e47c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-641ca135d03a20a7", "level": "note", "message": {"text": "Very large file: tests/stress_test_comprehensive.py (1442 lines)"}, "properties": {"repobilityId": "c062ea58739c3a86", "scanner": "scanner-primary", "fingerprint": "641ca135d03a20a7", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-de0bae96ee32e4e6", "level": "note", "message": {"text": "Very large file: static/nova-chat.js (4297 lines)"}, "properties": {"repobilityId": "31f570685161aaad", "scanner": "scanner-primary", "fingerprint": "de0bae96ee32e4e6", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-9083bfdffe0d0d1e", "level": "note", "message": {"text": "Very large file: static/js/hub.js (1584 lines)"}, "properties": {"repobilityId": "91ae1f0c2095fcdf", "scanner": "scanner-primary", "fingerprint": "9083bfdffe0d0d1e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-fcd6c48cb73817fe", "level": "note", "message": {"text": "Very large file: static/js/platform.js (2375 lines)"}, "properties": {"repobilityId": "93d4c21d4e228a6a", "scanner": "scanner-primary", "fingerprint": "fcd6c48cb73817fe", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-e933c5c84b81bbfc", "level": "note", "message": {"text": "Very large file: static/js/nova.js (4049 lines)"}, "properties": {"repobilityId": "034bc392abd4d186", "scanner": "scanner-primary", "fingerprint": "e933c5c84b81bbfc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-51e70abe1b683dc4", "level": "note", "message": {"text": "Very large file: docs/rag_implementation_sketch.py (1450 lines)"}, "properties": {"repobilityId": "42bbd7d5255513c8", "scanner": "scanner-primary", "fingerprint": "51e70abe1b683dc4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-6aa95c4347764b9f", "level": "note", "message": {"text": "Very large file: scripts/generate_qc_audit_docx.py (1607 lines)"}, "properties": {"repobilityId": "46e4ac75327ba0e2", "scanner": "scanner-primary", "fingerprint": "6aa95c4347764b9f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-9eb0838ae180cf81", "level": "note", "message": {"text": "Very large file: scripts/extract_client_plans.py (2310 lines)"}, "properties": {"repobilityId": "58918c66e253d03c", "scanner": "scanner-primary", "fingerprint": "9eb0838ae180cf81", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-167a97faf58f0982", "level": "note", "message": {"text": "Very large file: scripts/expand_supabase_tables.py (1371 lines)"}, "properties": {"repobilityId": "4a20e1922b9d860c", "scanner": "scanner-primary", "fingerprint": "167a97faf58f0982", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-7da923997e19d95f", "level": "note", "message": {"text": "Very large file: routes/health.py (1663 lines)"}, "properties": {"repobilityId": "98fca138ba394959", "scanner": "scanner-primary", "fingerprint": "7da923997e19d95f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-141b30a41e03817b", "level": "note", "message": {"text": "No license file detected"}, "properties": {"repobilityId": "d227a15bc51ed162", "scanner": "scanner-primary", "fingerprint": "141b30a41e03817b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["license", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "ab3aa4c9e8fa05ed", "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": "3b6c15d6efad57d8", "scanner": "scanner-primary", "fingerprint": "72b2a6250083a784", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "incomplete", "generated-repo-pattern"]}}, {"ruleId": "scanner-9d79c4077342a7d0", "level": "warning", "message": {"text": "Runtime service client appears to use placeholder configuration"}, "properties": {"repobilityId": "ab62cc8968e12810", "scanner": "scanner-primary", "fingerprint": "9d79c4077342a7d0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "runtime-config", "service-client", "generated-repo-pattern"]}}, {"ruleId": "scanner-2d0c7b7ab8f8aacf", "level": "warning", "message": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "properties": {"repobilityId": "aabbf50af22355be", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-749d4bc1bd66df5f", "level": "warning", "message": {"text": "Agent instructions exist but release-hardening basics are missing"}, "properties": {"repobilityId": "ec8a84a685b61654", "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": "c1a49f5133d1059a", "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": "959b2b04e3eb215a", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-cc55229a7a3c078d", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .mcp.json"}, "properties": {"repobilityId": "51942fb3d5b8b5b4", "scanner": "scanner-primary", "fingerprint": "cc55229a7a3c078d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "mcp_config"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".mcp.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-b10c06af66a5fa7b", "level": "none", "message": {"text": "Commented-code block (8 lines) in channel_recommender.py:787"}, "properties": {"repobilityId": "d27c718afcb52b51", "scanner": "scanner-primary", "fingerprint": "b10c06af66a5fa7b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-41588445d2bdf32e", "level": "none", "message": {"text": "Commented-code block (8 lines) in llm_router.py:173"}, "properties": {"repobilityId": "0b7fa03e37ac3be7", "scanner": "scanner-primary", "fingerprint": "41588445d2bdf32e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-31c9ea7d2e06b494", "level": "note", "message": {"text": "Legacy-named symbol `intl_role_benchmarks_v1` in kb_loader.py:295"}, "properties": {"repobilityId": "d682e1570d44afdc", "scanner": "scanner-primary", "fingerprint": "31c9ea7d2e06b494", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-0e034747c50e6582", "level": "none", "message": {"text": "Commented-code block (5 lines) in kb_loader.py:36"}, "properties": {"repobilityId": "e9387ecb1107066b", "scanner": "scanner-primary", "fingerprint": "0e034747c50e6582", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9d0f294bd48fbd02", "level": "note", "message": {"text": "Legacy-named symbol `scribe_v2` in elevenlabs_integration.py:428"}, "properties": {"repobilityId": "4f2a2b380637c38c", "scanner": "scanner-primary", "fingerprint": "9d0f294bd48fbd02", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-a040f4a11f9c4ec7", "level": "none", "message": {"text": "Commented-code block (5 lines) in collar_intelligence.py:1216"}, "properties": {"repobilityId": "078f85c4874ab13f", "scanner": "scanner-primary", "fingerprint": "a040f4a11f9c4ec7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9dfb7540df39f984", "level": "none", "message": {"text": "Commented-code block (5 lines) in deck_generator.py:269"}, "properties": {"repobilityId": "6253dbe44188600b", "scanner": "scanner-primary", "fingerprint": "9dfb7540df39f984", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bbe863945fbfe155", "level": "note", "message": {"text": "Legacy-named symbol `stats_copy` in outcome_pipeline.py:782"}, "properties": {"repobilityId": "c4f5b2cc131be480", "scanner": "scanner-primary", "fingerprint": "bbe863945fbfe155", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-bfec68fc21595397", "level": "note", "message": {"text": "Legacy-named symbol `BLS_v1` in api_enrichment.py:930"}, "properties": {"repobilityId": "01804984f569039c", "scanner": "scanner-primary", "fingerprint": "bfec68fc21595397", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-0f5b095e926b7b31", "level": "none", "message": {"text": "Commented-code block (5 lines) in api_enrichment.py:134"}, "properties": {"repobilityId": "05aa22042b467f8b", "scanner": "scanner-primary", "fingerprint": "0f5b095e926b7b31", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8fb28bb1df990dc6", "level": "none", "message": {"text": "Commented-code block (5 lines) in trend_engine.py:43"}, "properties": {"repobilityId": "ad500f6d639be068", "scanner": "scanner-primary", "fingerprint": "8fb28bb1df990dc6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-da69211ce8cc9883", "level": "none", "message": {"text": "Commented-code block (12 lines) in benchmark_registry.py:67"}, "properties": {"repobilityId": "686c4fdf624084c6", "scanner": "scanner-primary", "fingerprint": "da69211ce8cc9883", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f876adbcf30ff72d", "level": "none", "message": {"text": "Commented-code block (9 lines) in ppt_generator.py:828"}, "properties": {"repobilityId": "1523f59a196451eb", "scanner": "scanner-primary", "fingerprint": "f876adbcf30ff72d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-099e9e9fe6a08784", "level": "none", "message": {"text": "Commented-code block (6 lines) in monitoring.py:946"}, "properties": {"repobilityId": "a540ef78a7756a6f", "scanner": "scanner-primary", "fingerprint": "099e9e9fe6a08784", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e2c8bf3590c79612", "level": "note", "message": {"text": "Legacy-named symbol `excel_v2` in app.py:3547"}, "properties": {"repobilityId": "188788251c9622ae", "scanner": "scanner-primary", "fingerprint": "e2c8bf3590c79612", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-b8937c3c97afa37b", "level": "none", "message": {"text": "Commented-code block (7 lines) in app.py:72"}, "properties": {"repobilityId": "ac8f065ef858a05d", "scanner": "scanner-primary", "fingerprint": "b8937c3c97afa37b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3e71bf2c437791ce", "level": "note", "message": {"text": "Stub function `get_persistence` (body is just `pass`/`return`) \u2014 app.py:5708"}, "properties": {"repobilityId": "e72e09227d5eb921", "scanner": "scanner-primary", "fingerprint": "3e71bf2c437791ce", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "empty-handler", "dead-code"]}}, {"ruleId": "scanner-fc6582114229a593", "level": "note", "message": {"text": "Legacy-named symbol `excel_v2` in plan_schema.py:18"}, "properties": {"repobilityId": "e0ec2b60f61f9eca", "scanner": "scanner-primary", "fingerprint": "fc6582114229a593", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-ed6abb489d8cd56a", "level": "none", "message": {"text": "Commented-code block (7 lines) in vector_search.py:90"}, "properties": {"repobilityId": "9de109b5b7ab76da", "scanner": "scanner-primary", "fingerprint": "ed6abb489d8cd56a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8b46752486ede56c", "level": "none", "message": {"text": "Commented-code block (7 lines) in pdf_report.py:231"}, "properties": {"repobilityId": "3cb55054dd9136f0", "scanner": "scanner-primary", "fingerprint": "8b46752486ede56c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cbd1e57c7c00e517", "level": "note", "message": {"text": "Legacy-named symbol `slotops_baselines_v1` in slotops_engine.py:199"}, "properties": {"repobilityId": "eebed8d776873aec", "scanner": "scanner-primary", "fingerprint": "cbd1e57c7c00e517", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-6e893f806b3c0e4c", "level": "none", "message": {"text": "Commented-code block (5 lines) in auto_qc.py:45"}, "properties": {"repobilityId": "464d7dfe23450e19", "scanner": "scanner-primary", "fingerprint": "6e893f806b3c0e4c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-23e4f0da9a36e017", "level": "none", "message": {"text": "Commented-code block (9 lines) in standardizer.py:44"}, "properties": {"repobilityId": "941f8fa269dbcc9d", "scanner": "scanner-primary", "fingerprint": "23e4f0da9a36e017", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6847c4dfa10315ad", "level": "none", "message": {"text": "Commented-code block (5 lines) in budget_engine.py:56"}, "properties": {"repobilityId": "257465f5dc257262", "scanner": "scanner-primary", "fingerprint": "6847c4dfa10315ad", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2029f1cbf2a73570", "level": "note", "message": {"text": "Legacy-named symbol `excel_v2` in cited_data_block.py:9"}, "properties": {"repobilityId": "d7a76bb08f717b81", "scanner": "scanner-primary", "fingerprint": "2029f1cbf2a73570", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-79ed0583bbb0045b", "level": "note", "message": {"text": "Stub function `get_local_salary_summary` (body is just `pass`/`return`) \u2014 cited_data_block.py:34"}, "properties": {"repobilityId": "3b1c9ca298d8c2c3", "scanner": "scanner-primary", "fingerprint": "79ed0583bbb0045b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "empty-handler", "dead-code"]}}, {"ruleId": "scanner-6a878f1ca0953fe9", "level": "note", "message": {"text": "Legacy-named symbol `intl_role_benchmarks_v1` in plan_currency.py:13"}, "properties": {"repobilityId": "37864e4fce6f4d1c", "scanner": "scanner-primary", "fingerprint": "6a878f1ca0953fe9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-c4e1cdc59679698f", "level": "note", "message": {"text": "Legacy-named symbol `intl_role_benchmarks_v1` in intl_benchmark_lookup.py:3"}, "properties": {"repobilityId": "668d6af05f161df2", "scanner": "scanner-primary", "fingerprint": "c4e1cdc59679698f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-f744e0f5c7b8a3f7", "level": "note", "message": {"text": "Legacy-named symbol `ch_copy` in excel_v2.py:2010"}, "properties": {"repobilityId": "7a4a0a8f6f044af6", "scanner": "scanner-primary", "fingerprint": "f744e0f5c7b8a3f7", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-e162297675abd781", "level": "none", "message": {"text": "Commented-code block (5 lines) in excel_v2.py:2513"}, "properties": {"repobilityId": "d506e42e44448a66", "scanner": "scanner-primary", "fingerprint": "e162297675abd781", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-625e950795a1f2d6", "level": "none", "message": {"text": "Commented-code block (7 lines) in wsgi.py:161"}, "properties": {"repobilityId": "3a916120c813a273", "scanner": "scanner-primary", "fingerprint": "625e950795a1f2d6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b80c3df28cb790ca", "level": "note", "message": {"text": "Legacy-named symbol `headline_copy` in social_plan.py:1606"}, "properties": {"repobilityId": "bf35854f12b2f532", "scanner": "scanner-primary", "fingerprint": "b80c3df28cb790ca", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-dffee70893c8a48e", "level": "none", "message": {"text": "Commented-code block (10 lines) in data_enrichment.py:1425"}, "properties": {"repobilityId": "65dd70c982251f80", "scanner": "scanner-primary", "fingerprint": "dffee70893c8a48e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6886b495cf5772d9", "level": "note", "message": {"text": "Legacy-named symbol `excel_v2` in competitive_intel.py:1469"}, "properties": {"repobilityId": "fe77928a00879aba", "scanner": "scanner-primary", "fingerprint": "6886b495cf5772d9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-66fd464187d26e45", "level": "none", "message": {"text": "Commented-code block (5 lines) in competitive_intel.py:272"}, "properties": {"repobilityId": "72dc3a2bfaeab632", "scanner": "scanner-primary", "fingerprint": "66fd464187d26e45", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c8f51d02d474dc94", "level": "note", "message": {"text": "Legacy-named symbol `nova_knowledge_v2` in rag_pipeline.py:8"}, "properties": {"repobilityId": "3e089957392e3e9b", "scanner": "scanner-primary", "fingerprint": "c8f51d02d474dc94", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-9ca2b36010d8903b", "level": "note", "message": {"text": "Legacy-named symbol `kb_backup` in supabase_cache.py:858"}, "properties": {"repobilityId": "24b0647f60363254", "scanner": "scanner-primary", "fingerprint": "9ca2b36010d8903b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-1d8c6a48dafb57e7", "level": "none", "message": {"text": "Commented-code block (7 lines) in supabase_cache.py:392"}, "properties": {"repobilityId": "f75c5949dadfac4d", "scanner": "scanner-primary", "fingerprint": "1d8c6a48dafb57e7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1ef0a5eb6fa019db", "level": "none", "message": {"text": "Commented-code block (6 lines) in role_taxonomy.py:17"}, "properties": {"repobilityId": "6128bb13e88fd616", "scanner": "scanner-primary", "fingerprint": "1ef0a5eb6fa019db", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3b479d98431b325e", "level": "none", "message": {"text": "Commented-code block (8 lines) in data_matrix_monitor.py:85"}, "properties": {"repobilityId": "5935dd8bdc624c25", "scanner": "scanner-primary", "fingerprint": "3b479d98431b325e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ed965b852eb1db29", "level": "none", "message": {"text": "Commented-code block (6 lines) in alert_manager.py:69"}, "properties": {"repobilityId": "81047b516841ef01", "scanner": "scanner-primary", "fingerprint": "ed965b852eb1db29", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b5553e4626342a5a", "level": "none", "message": {"text": "Commented-code block (7 lines) in pdf_generator.py:641"}, "properties": {"repobilityId": "feb3fd4938120857", "scanner": "scanner-primary", "fingerprint": "b5553e4626342a5a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bbc1867ab00b77b7", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 http_pool.py:4"}, "properties": {"repobilityId": "a9d611fe65eebaff", "scanner": "scanner-primary", "fingerprint": "bbc1867ab00b77b7", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-61787971786e39da", "level": "note", "message": {"text": "Legacy-named symbol `intl_role_benchmarks_v1` in joveo_slides_template.py:535"}, "properties": {"repobilityId": "5395d6a1faea9fc7", "scanner": "scanner-primary", "fingerprint": "61787971786e39da", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-93179c9132ea7e93", "level": "none", "message": {"text": "Commented-code block (6 lines) in joveo_slides_template.py:83"}, "properties": {"repobilityId": "1e46c300bdf36a92", "scanner": "scanner-primary", "fingerprint": "93179c9132ea7e93", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e49bdc24a7ef6a89", "level": "note", "message": {"text": "Stub function `get_cpa_median_usd` (body is just `pass`/`return`) \u2014 joveo_slides_template.py:45"}, "properties": {"repobilityId": "b750bf68aa75899a", "scanner": "scanner-primary", "fingerprint": "e49bdc24a7ef6a89", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "empty-handler", "dead-code"]}}, {"ruleId": "scanner-e060cb0c12efd8aa", "level": "note", "message": {"text": "Legacy-named symbol `excel_v2` in archive/excel_legacy.py:4"}, "properties": {"repobilityId": "4a72a4f013854265", "scanner": "scanner-primary", "fingerprint": "e060cb0c12efd8aa", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-597b12da7b49eaea", "level": "note", "message": {"text": "Legacy-named symbol `intl_role_benchmarks_v1` in tests/test_plan_currency.py:123"}, "properties": {"repobilityId": "7b597b165fd49f2d", "scanner": "scanner-primary", "fingerprint": "597b12da7b49eaea", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-766e87e0231f02c4", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/test_us_regression_safety.py:282"}, "properties": {"repobilityId": "81d2dbae76639fc2", "scanner": "scanner-primary", "fingerprint": "766e87e0231f02c4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b001736f1d4616a5", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/test_s50_upgrades.py:1125"}, "properties": {"repobilityId": "147bff9c30dc0c98", "scanner": "scanner-primary", "fingerprint": "b001736f1d4616a5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5c697d61bdad0632", "level": "note", "message": {"text": "Legacy-named symbol `generate_excel_v2` in tests/test_excel_provenance.py:8"}, "properties": {"repobilityId": "fc4fecea853c0c3a", "scanner": "scanner-primary", "fingerprint": "5c697d61bdad0632", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-2747949044258b76", "level": "none", "message": {"text": "Commented-code block (5 lines) in static/nova-auth.js:86"}, "properties": {"repobilityId": "28ea8226b0067e08", "scanner": "scanner-primary", "fingerprint": "2747949044258b76", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-89c7a43838f3ab38", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 static/nova-auth-gate.js:325"}, "properties": {"repobilityId": "1b6d0fe81cc78e98", "scanner": "scanner-primary", "fingerprint": "89c7a43838f3ab38", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c2846feea9478428", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 static/nova-embed.js:242"}, "properties": {"repobilityId": "1beb7d9f7ad373e2", "scanner": "scanner-primary", "fingerprint": "c2846feea9478428", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-8f0c9af3b3cc244f", "level": "note", "message": {"text": "Legacy-named symbol `code_copy` in static/nova-chat.js:814"}, "properties": {"repobilityId": "0acc407744d77364", "scanner": "scanner-primary", "fingerprint": "8f0c9af3b3cc244f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-fe27d8be7fe6ae80", "level": "none", "message": {"text": "Commented-code block (6 lines) in static/nova-chat.js:103"}, "properties": {"repobilityId": "b5cdd7694feec8fa", "scanner": "scanner-primary", "fingerprint": "fe27d8be7fe6ae80", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d52bf28b1835d288", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 static/nova-chat.js:2582"}, "properties": {"repobilityId": "57f5779ddbc4771b", "scanner": "scanner-primary", "fingerprint": "d52bf28b1835d288", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-416ced982d6b18b0", "level": "note", "message": {"text": "Legacy-named symbol `nova_context_v2` in static/js/platform.js:279"}, "properties": {"repobilityId": "02946786f6c417d4", "scanner": "scanner-primary", "fingerprint": "416ced982d6b18b0", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-e0424822eae5aa79", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 static/js/platform.js:775"}, "properties": {"repobilityId": "9d1f844ec3ae6011", "scanner": "scanner-primary", "fingerprint": "e0424822eae5aa79", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e863455ad4061ce1", "level": "none", "message": {"text": "Commented-code block (7 lines) in static/js/nova.js:653"}, "properties": {"repobilityId": "8b8b25ba0ac70938", "scanner": "scanner-primary", "fingerprint": "e863455ad4061ce1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a586184db7c01938", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 static/js/nova.js:217"}, "properties": {"repobilityId": "68a492962d2eb9d1", "scanner": "scanner-primary", "fingerprint": "a586184db7c01938", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-9f5e750587d7e3b8", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 static/js/campaign-intel-fetch.js:69"}, "properties": {"repobilityId": "5b8c9b1c15f00f95", "scanner": "scanner-primary", "fingerprint": "9f5e750587d7e3b8", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-cfed919f0191fbf1", "level": "note", "message": {"text": "Legacy-named symbol `nova_knowledge_v2` in docs/rag_implementation_sketch.py:81"}, "properties": {"repobilityId": "ef7273ce573f3e7a", "scanner": "scanner-primary", "fingerprint": "cfed919f0191fbf1", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-159efa6ed08d673b", "level": "note", "message": {"text": "Legacy-named symbol `excel_v2` in scripts/render_sample_outputs.py:98"}, "properties": {"repobilityId": "bdeb5956100a4a62", "scanner": "scanner-primary", "fingerprint": "159efa6ed08d673b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-4f575225ec17a091", "level": "note", "message": {"text": "Legacy-named symbol `old_backup` in scripts/backup_kb.py:112"}, "properties": {"repobilityId": "b72171bef03002a6", "scanner": "scanner-primary", "fingerprint": "4f575225ec17a091", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-58aa0659b7bfc648", "level": "note", "message": {"text": "Legacy-named symbol `_write_backup` in scripts/migrate_voyage_4.py:318"}, "properties": {"repobilityId": "557cd11bbf893f03", "scanner": "scanner-primary", "fingerprint": "58aa0659b7bfc648", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-fbdc32562a3e8785", "level": "note", "message": {"text": "Legacy-named symbol `nova_knowledge_v2` in scripts/rag_backfill.py:4"}, "properties": {"repobilityId": "b3c50159db0ee6b6", "scanner": "scanner-primary", "fingerprint": "fbdc32562a3e8785", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-c952dd9f14ebc156", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/rag_backfill.py:88"}, "properties": {"repobilityId": "1cdb09e8263a07bc", "scanner": "scanner-primary", "fingerprint": "c952dd9f14ebc156", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9f23970cda1fcc80", "level": "note", "message": {"text": "Legacy-named symbol `tier_3_old` in scripts/extract_client_plans.py:214"}, "properties": {"repobilityId": "86541dddafab526c", "scanner": "scanner-primary", "fingerprint": "9f23970cda1fcc80", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-b164b512b98c5941", "level": "none", "message": {"text": "Commented-code block (11 lines) in routes/competitive.py:71"}, "properties": {"repobilityId": "cb46369069e5001d", "scanner": "scanner-primary", "fingerprint": "b164b512b98c5941", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-20397b9d153ca2c4", "level": "note", "message": {"text": "Legacy-named symbol `eleven_monolingual_v1` in routes/tts.py:21"}, "properties": {"repobilityId": "8f65c15db616c610", "scanner": "scanner-primary", "fingerprint": "20397b9d153ca2c4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-207e294e81723242", "level": "note", "message": {"text": "Legacy-named symbol `markdown_v2` in apis/scrapers/crawl4ai_client.py:293"}, "properties": {"repobilityId": "1add5bc8934053bc", "scanner": "scanner-primary", "fingerprint": "207e294e81723242", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-be46ea126aa5d8dc", "level": "note", "message": {"text": "Near-duplicate function bodies in 3 places"}, "properties": {"repobilityId": "2186c5dbd23d405d", "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": "833cc1bfc31a32eb", "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": "09449b09928ecf91", "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": "a244a37baf0ce1a3", "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": "c34bd99ca00fc2a3", "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": "daf93fcbd1c01235", "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": "42f85bdb0ac3285c", "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": "386398fbff41f8a7", "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": "ac1444596d17a067", "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": "ce71ac55ad4801ff", "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": "680cce2d43325171", "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": "25d538bd69b0a379", "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": "8933b6be8ba0e165", "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": "85fc38cc5234457f", "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": "f81de86fe339cf62", "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": "9c6a6488c91a03c2", "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": "e0dfbe06ced7585a", "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": "52d05701d7646e5e", "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": "8968b140b7fc00b9", "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": "bcfa4242a1cc9d70", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}]}]}