{"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-4fc3edf64281683c", "name": "Possibly dead Python function: handle_file_chooser", "shortDescription": {"text": "Possibly dead Python function: handle_file_chooser"}, "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-c3b3b3341e973652", "name": "Possibly dead Python function: click_by_xpath", "shortDescription": {"text": "Possibly dead Python function: click_by_xpath"}, "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-6e550ee334e9aef3", "name": "Possibly dead Python function: input_by_xpath", "shortDescription": {"text": "Possibly dead Python function: input_by_xpath"}, "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-26973b73a8de00cb", "name": "Possibly dead Python function: execute_script", "shortDescription": {"text": "Possibly dead Python function: execute_script"}, "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-20b10c73f583a60c", "name": "Possibly dead Python function: to_serializable", "shortDescription": {"text": "Possibly dead Python function: to_serializable"}, "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-2662a2e20ed8c8ca", "name": "Possibly dead Python function: set_page_info", "shortDescription": {"text": "Possibly dead Python function: set_page_info"}, "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-c499bdc13ce43e67", "name": "Possibly dead Python function: save_dump", "shortDescription": {"text": "Possibly dead Python function: save_dump"}, "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-8e474d835014f251", "name": "Possibly dead Python function: add_execution", "shortDescription": {"text": "Possibly dead Python function: add_execution"}, "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-b72a85d918a855a2", "name": "Possibly dead Python function: add_model_brief", "shortDescription": {"text": "Possibly dead Python function: add_model_brief"}, "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-32568a7cdb2a7401", "name": "Possibly dead Python function: save_to_file", "shortDescription": {"text": "Possibly dead Python function: save_to_file"}, "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-5d57099feb16402a", "name": "Possibly dead Python function: set_user_query", "shortDescription": {"text": "Possibly dead Python function: set_user_query"}, "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-798d18d422ff6764", "name": "Possibly dead Python function: set_matched_element", "shortDescription": {"text": "Possibly dead Python function: set_matched_element"}, "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-af48a8b51550906b", "name": "Possibly dead Python function: set_data", "shortDescription": {"text": "Possibly dead Python function: set_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-56e3a1f5e892154e", "name": "Possibly dead Python function: set_task_info", "shortDescription": {"text": "Possibly dead Python function: set_task_info"}, "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-91509512af3e2eaf", "name": "Possibly dead Python function: set_error", "shortDescription": {"text": "Possibly dead Python function: set_error"}, "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-6ad6a7c3999ee4fd", "name": "Possibly dead Python function: build", "shortDescription": {"text": "Possibly dead Python function: build"}, "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-550a4c4518b17d06", "name": "Possibly dead Python function: draw_action_sequence", "shortDescription": {"text": "Possibly dead Python function: draw_action_sequence"}, "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-43516cede82b58f8", "name": "Possibly dead Python function: draw_multiple_elements", "shortDescription": {"text": "Possibly dead Python function: draw_multiple_elements"}, "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-6af50b9849970796", "name": "Insecure pattern 'direct_innerhtml_assignment' in pymidscene/core/js_report_generator.py:516", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in pymidscene/core/js_report_generator.py:516"}, "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-f37824e6fcd12b1a", "name": "Insecure pattern 'direct_innerhtml_assignment' in pymidscene/core/report_generator.py:1096", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in pymidscene/core/report_generator.py:1096"}, "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-6372cebde0220094", "name": "No auth library detected", "shortDescription": {"text": "No auth library detected"}, "fullDescription": {"text": "The scanner did not find any standard auth library (JWT, OAuth, NextAuth, Auth0, etc.). The repo has auth/admin/session surface indicators, so auth may live in custom code, in a separate service, or be missing."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-76eae953fe1f9018", "name": "Very large file: pymidscene/core/report_generator.py (1697 lines)", "shortDescription": {"text": "Very large file: pymidscene/core/report_generator.py (1697 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-d3ff713e1aaa97db", "name": "Very large file: pymidscene/core/agent/agent.py (2807 lines)", "shortDescription": {"text": "Very large file: pymidscene/core/agent/agent.py (2807 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3ab5d313dda8e5f9", "name": "Debug logging residue appears in source files", "shortDescription": {"text": "Debug logging residue appears in source files"}, "fullDescription": {"text": "Found 22 console/debugger/print-style debug statements in non-test source. This is a common fast-generation residue before production cleanup."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2d0c7b7ab8f8aacf", "name": "Critical user flow still appears backed by mock or placeholder data", "shortDescription": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "fullDescription": {"text": "A payment/auth/admin/order/billing-style flow contains mock, fake, TODO, dummy, or placeholder markers in runtime source. In the Fable corpus this is a high-leverage completeness smell: the app can look finished while the money, identity, or tenant flow is still scaffolded."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-224b70e9d7096408", "name": "Legacy-named symbol `test_tap_falls_back_to_legacy` in tests/ios/test_webdriver_client.py:121", "shortDescription": {"text": "Legacy-named symbol `test_tap_falls_back_to_legacy` in tests/ios/test_webdriver_client.py:121"}, "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-71cafe888b3b7113", "name": "Commented-code block (5 lines) in pymidscene/core/agent/agent.py:1692", "shortDescription": {"text": "Commented-code block (5 lines) in pymidscene/core/agent/agent.py:1692"}, "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-fcd88a2eb98c19dd", "name": "Commented-code block (5 lines) in pymidscene/core/agent/task_cache.py:182", "shortDescription": {"text": "Commented-code block (5 lines) in pymidscene/core/agent/task_cache.py:182"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-cc0f9d8e41b33b0e", "name": "11 env vars used in code but missing from .env.example", "shortDescription": {"text": "11 env vars used in code but missing from .env.example"}, "fullDescription": {"text": "Drift between code and config docs. The first few: `MIDSCENE_CACHE_MAX_FILENAME_LENGTH`, `MIDSCENE_DOUBAO_API_KEY`, `MIDSCENE_DOUBAO_BASE_URL`, `MIDSCENE_DOUBAO_MODEL_NAME`, `MIDSCENE_FORCE_DEEP_THINK`, `MIDSCENE_PREFERRED_LANGUAGE`, `MIDSCENE_QWEN_API_KEY`, `MIDSCENE_QWEN_BASE_URL` + 3 more. Add them (with a placeholder/comment) to .env.example so onboarding doesn't break."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2c04133e54348533", "name": "Near-duplicate function bodies in 2 places", "shortDescription": {"text": "Near-duplicate function bodies in 2 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\npymidscene/android/agent.py:ai_locate, pymidscene/ios/agent.py:ai_locate\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:\npymidscene/android/agent.py:ai_action, pymidscene/android/agent.py:ai_act, pymidscene/ios/agent.py:ai_action, pymidscene/ios/agent.py:ai_act\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-be46ea126aa5d8dc", "name": "Near-duplicate function bodies in 3 places", "shortDescription": {"text": "Near-duplicate function bodies in 3 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\npymidscene/web_integration/base.py:wait_for_navigation, pymidscene/web_integration/playwright/page.py:wait_for_navigation, pymidscene/web_integration/playwright/page.py:wait\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/23997"}, "properties": {"repository": "AIPythoner/pymidscene", "repoUrl": "https://github.com/AIPythoner/pymidscene", "branch": "main"}, "results": [{"ruleId": "scanner-4fc3edf64281683c", "level": "note", "message": {"text": "Possibly dead Python function: handle_file_chooser"}, "properties": {"repobilityId": "9dcb032988c8dcf0", "scanner": "scanner-primary", "fingerprint": "4fc3edf64281683c", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "examples/xhs_upload.py:72"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-c3b3b3341e973652", "level": "note", "message": {"text": "Possibly dead Python function: click_by_xpath"}, "properties": {"repobilityId": "324591385db13f28", "scanner": "scanner-primary", "fingerprint": "c3b3b3341e973652", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "pymidscene/web_integration/playwright/page.py:794"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-6e550ee334e9aef3", "level": "note", "message": {"text": "Possibly dead Python function: input_by_xpath"}, "properties": {"repobilityId": "5bb4af8d4b01b497", "scanner": "scanner-primary", "fingerprint": "6e550ee334e9aef3", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "pymidscene/web_integration/playwright/page.py:815"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-26973b73a8de00cb", "level": "note", "message": {"text": "Possibly dead Python function: execute_script"}, "properties": {"repobilityId": "2c4fe83505005af0", "scanner": "scanner-primary", "fingerprint": "26973b73a8de00cb", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "pymidscene/web_integration/playwright/page.py:990"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-20b10c73f583a60c", "level": "note", "message": {"text": "Possibly dead Python function: to_serializable"}, "properties": {"repobilityId": "483f27c6e54520a7", "scanner": "scanner-primary", "fingerprint": "20b10c73f583a60c", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "pymidscene/core/types.py:31"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-2662a2e20ed8c8ca", "level": "note", "message": {"text": "Possibly dead Python function: set_page_info"}, "properties": {"repobilityId": "220234b680cc9f90", "scanner": "scanner-primary", "fingerprint": "2662a2e20ed8c8ca", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "pymidscene/core/dump.py:281"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-c499bdc13ce43e67", "level": "note", "message": {"text": "Possibly dead Python function: save_dump"}, "properties": {"repobilityId": "bd87ba52604275d5", "scanner": "scanner-primary", "fingerprint": "c499bdc13ce43e67", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "pymidscene/core/dump.py:693"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-8e474d835014f251", "level": "note", "message": {"text": "Possibly dead Python function: add_execution"}, "properties": {"repobilityId": "7a8f75a77bb8c1e8", "scanner": "scanner-primary", "fingerprint": "8e474d835014f251", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "pymidscene/core/dump.py:772"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-b72a85d918a855a2", "level": "note", "message": {"text": "Possibly dead Python function: add_model_brief"}, "properties": {"repobilityId": "014c3b00f17790c4", "scanner": "scanner-primary", "fingerprint": "b72a85d918a855a2", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "pymidscene/core/dump.py:782"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-32568a7cdb2a7401", "level": "note", "message": {"text": "Possibly dead Python function: save_to_file"}, "properties": {"repobilityId": "db7f3c965506456f", "scanner": "scanner-primary", "fingerprint": "32568a7cdb2a7401", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "pymidscene/core/dump.py:817"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-5d57099feb16402a", "level": "note", "message": {"text": "Possibly dead Python function: set_user_query"}, "properties": {"repobilityId": "fa8ac4f90c5d0ffb", "scanner": "scanner-primary", "fingerprint": "5d57099feb16402a", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "pymidscene/core/dump.py:878"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-798d18d422ff6764", "level": "note", "message": {"text": "Possibly dead Python function: set_matched_element"}, "properties": {"repobilityId": "8aa42dd96e6eee37", "scanner": "scanner-primary", "fingerprint": "798d18d422ff6764", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "pymidscene/core/dump.py:883"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-af48a8b51550906b", "level": "note", "message": {"text": "Possibly dead Python function: set_data"}, "properties": {"repobilityId": "764623b6cc9b59d4", "scanner": "scanner-primary", "fingerprint": "af48a8b51550906b", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "pymidscene/core/dump.py:888"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-56e3a1f5e892154e", "level": "note", "message": {"text": "Possibly dead Python function: set_task_info"}, "properties": {"repobilityId": "6e9e3d436f66e5c2", "scanner": "scanner-primary", "fingerprint": "56e3a1f5e892154e", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "pymidscene/core/dump.py:893"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-91509512af3e2eaf", "level": "note", "message": {"text": "Possibly dead Python function: set_error"}, "properties": {"repobilityId": "75daa2bca685aa0a", "scanner": "scanner-primary", "fingerprint": "91509512af3e2eaf", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "pymidscene/core/dump.py:898"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-6ad6a7c3999ee4fd", "level": "note", "message": {"text": "Possibly dead Python function: build"}, "properties": {"repobilityId": "f29247879cb427ea", "scanner": "scanner-primary", "fingerprint": "6ad6a7c3999ee4fd", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "pymidscene/core/dump.py:903"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-550a4c4518b17d06", "level": "note", "message": {"text": "Possibly dead Python function: draw_action_sequence"}, "properties": {"repobilityId": "0acffe511cd340e4", "scanner": "scanner-primary", "fingerprint": "550a4c4518b17d06", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "pymidscene/core/element_marker.py:313"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-43516cede82b58f8", "level": "note", "message": {"text": "Possibly dead Python function: draw_multiple_elements"}, "properties": {"repobilityId": "9e8cf280b3c0a04a", "scanner": "scanner-primary", "fingerprint": "43516cede82b58f8", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "pymidscene/core/element_marker.py:428"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-6af50b9849970796", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in pymidscene/core/js_report_generator.py:516"}, "properties": {"repobilityId": "dc3d80ae84912fd1", "scanner": "scanner-primary", "fingerprint": "6af50b9849970796", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "pymidscene/core/js_report_generator.py"}, "region": {"startLine": 516}}}]}, {"ruleId": "scanner-f37824e6fcd12b1a", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in pymidscene/core/report_generator.py:1096"}, "properties": {"repobilityId": "08803e28a5088b55", "scanner": "scanner-primary", "fingerprint": "f37824e6fcd12b1a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "pymidscene/core/report_generator.py"}, "region": {"startLine": 1096}}}]}, {"ruleId": "scanner-6372cebde0220094", "level": "warning", "message": {"text": "No auth library detected"}, "properties": {"repobilityId": "a5b6035a5bbf8054", "scanner": "scanner-primary", "fingerprint": "6372cebde0220094", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["coverage", "auth"]}}, {"ruleId": "scanner-76eae953fe1f9018", "level": "note", "message": {"text": "Very large file: pymidscene/core/report_generator.py (1697 lines)"}, "properties": {"repobilityId": "59b8530aa1c17bd3", "scanner": "scanner-primary", "fingerprint": "76eae953fe1f9018", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-d3ff713e1aaa97db", "level": "note", "message": {"text": "Very large file: pymidscene/core/agent/agent.py (2807 lines)"}, "properties": {"repobilityId": "34be34f155815c86", "scanner": "scanner-primary", "fingerprint": "d3ff713e1aaa97db", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "0eb557029ef082cc", "scanner": "scanner-primary", "fingerprint": "3ab5d313dda8e5f9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["debug", "cleanup", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-2d0c7b7ab8f8aacf", "level": "warning", "message": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "properties": {"repobilityId": "8e89ba22d1a29567", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-224b70e9d7096408", "level": "note", "message": {"text": "Legacy-named symbol `test_tap_falls_back_to_legacy` in tests/ios/test_webdriver_client.py:121"}, "properties": {"repobilityId": "c1144ccd3ecbe062", "scanner": "scanner-primary", "fingerprint": "224b70e9d7096408", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-71cafe888b3b7113", "level": "none", "message": {"text": "Commented-code block (5 lines) in pymidscene/core/agent/agent.py:1692"}, "properties": {"repobilityId": "0566cd3adc527b70", "scanner": "scanner-primary", "fingerprint": "71cafe888b3b7113", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fcd88a2eb98c19dd", "level": "none", "message": {"text": "Commented-code block (5 lines) in pymidscene/core/agent/task_cache.py:182"}, "properties": {"repobilityId": "00a5a02870682412", "scanner": "scanner-primary", "fingerprint": "fcd88a2eb98c19dd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cc0f9d8e41b33b0e", "level": "note", "message": {"text": "11 env vars used in code but missing from .env.example"}, "properties": {"repobilityId": "c82cd8cd626c3599", "scanner": "scanner-primary", "fingerprint": "cc0f9d8e41b33b0e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "config-drift"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "87cbbedc9d1be4e9", "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": "898baf01f485b27f", "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": "985c1c4627cbb618", "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": "d66768e5cffef46b", "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": "375fc764f80e87b8", "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": "bc43d49107c9f5ef", "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": "825f4b49b7de0682", "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": "9c27163670dd9412", "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": "414cb80f36b09389", "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": "d4954b210db17462", "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": "aba901e63de687af", "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": "816f77350167b7eb", "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": "568a217b764fdce6", "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": "3bb4884e54ff8ee6", "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": "8af0c20eb3269841", "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": "f01387b783f5ba41", "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": "af02a4bbed143413", "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": "deafeda44a57ed47", "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": "f774df32e58c3dab", "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": "94ae5620b9f55a45", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}]}]}