{"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-f1e6ad9cc5f70bcf", "name": "Possibly dead Python function: async_setup_entry", "shortDescription": {"text": "Possibly dead Python function: async_setup_entry"}, "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-0f328ef2e2ed8a85", "name": "Possibly dead Python function: async_unload_entry", "shortDescription": {"text": "Possibly dead Python function: async_unload_entry"}, "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-b5851a44ae52d7c5", "name": "Possibly dead Python function: async_remove_config_entry_device", "shortDescription": {"text": "Possibly dead Python function: async_remove_config_entry_device"}, "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-40c853590f24d54a", "name": "Possibly dead Python function: async_setup_entry", "shortDescription": {"text": "Possibly dead Python function: async_setup_entry"}, "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-c532a6a1ce32710e", "name": "Possibly dead Python function: async_get_config_entry_diagnostics", "shortDescription": {"text": "Possibly dead Python function: async_get_config_entry_diagnostics"}, "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-9bd79af5af561b68", "name": "Possibly dead Python function: async_open_cover", "shortDescription": {"text": "Possibly dead Python function: async_open_cover"}, "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-70a0d851e6484da1", "name": "Possibly dead Python function: async_close_cover", "shortDescription": {"text": "Possibly dead Python function: async_close_cover"}, "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-77b0d06ecffdbfb5", "name": "Possibly dead Python function: async_stop_cover", "shortDescription": {"text": "Possibly dead Python function: async_stop_cover"}, "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-c4afba4b6d494292", "name": "Possibly dead Python function: async_setup_entry", "shortDescription": {"text": "Possibly dead Python function: async_setup_entry"}, "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-d1b4fbcd254f77de", "name": "Possibly dead Python function: async_set_hvac_mode", "shortDescription": {"text": "Possibly dead Python function: async_set_hvac_mode"}, "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-317b748c4c804b13", "name": "Possibly dead Python function: async_set_temperature", "shortDescription": {"text": "Possibly dead Python function: async_set_temperature"}, "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-ec517a0fa148e0b2", "name": "Possibly dead Python function: async_set_fan_mode", "shortDescription": {"text": "Possibly dead Python function: async_set_fan_mode"}, "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-8a627f4f13a9a011", "name": "Possibly dead Python function: async_setup_entry", "shortDescription": {"text": "Possibly dead Python function: async_setup_entry"}, "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-6b3893e38ce01ab1", "name": "Possibly dead Python function: async_step_user", "shortDescription": {"text": "Possibly dead Python function: async_step_user"}, "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-cd6af8b1ba0ecf22", "name": "Possibly dead Python function: async_step_reauth", "shortDescription": {"text": "Possibly dead Python function: async_step_reauth"}, "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-7fe94c81992e1af7", "name": "Possibly dead Python function: async_setup_entry", "shortDescription": {"text": "Possibly dead Python function: async_setup_entry"}, "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-4e65dd2ea913dfac", "name": "Possibly dead Python function: async_select_option", "shortDescription": {"text": "Possibly dead Python function: async_select_option"}, "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-a5857b40d4f39fa2", "name": "Possibly dead Python function: async_setup_entry", "shortDescription": {"text": "Possibly dead Python function: async_setup_entry"}, "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-6a2a5bd0aea0588e", "name": "Possibly dead Python function: async_press", "shortDescription": {"text": "Possibly dead Python function: async_press"}, "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-4022e35e8dedb0a6", "name": "Possibly dead Python function: async_setup_entry", "shortDescription": {"text": "Possibly dead Python function: async_setup_entry"}, "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-6c6d22617b0031c7", "name": "Possibly dead Python function: async_lock", "shortDescription": {"text": "Possibly dead Python function: async_lock"}, "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-5cb2e8de1eac945c", "name": "Possibly dead Python function: async_unlock", "shortDescription": {"text": "Possibly dead Python function: async_unlock"}, "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-f5cd540ae39a7348", "name": "Possibly dead Python function: async_setup_entry", "shortDescription": {"text": "Possibly dead Python function: async_setup_entry"}, "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-da7ae3597a91ec22", "name": "Possibly dead Python function: async_turn_on", "shortDescription": {"text": "Possibly dead Python function: async_turn_on"}, "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-8f91ebee206c0a55", "name": "Possibly dead Python function: async_turn_off", "shortDescription": {"text": "Possibly dead Python function: async_turn_off"}, "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-6403562a95cb26e2", "name": "Possibly dead Python function: async_setup_entry", "shortDescription": {"text": "Possibly dead Python function: async_setup_entry"}, "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-fe64e9848def4d95", "name": "Possibly dead Python function: async_set_native_value", "shortDescription": {"text": "Possibly dead Python function: async_set_native_value"}, "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-ec2b8dfb8fa81ad6", "name": "Possibly dead Python function: async_setup_entry", "shortDescription": {"text": "Possibly dead Python function: async_setup_entry"}, "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-d0d6ab93a46a5408", "name": "Possibly dead Python function: async_turn_on", "shortDescription": {"text": "Possibly dead Python function: async_turn_on"}, "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-0b2809481b36e000", "name": "Possibly dead Python function: async_turn_off", "shortDescription": {"text": "Possibly dead Python function: async_turn_off"}, "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-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-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-d39e2952d8ce5587", "name": "GitHub Action tracks a moving branch", "shortDescription": {"text": "GitHub Action tracks a moving branch"}, "fullDescription": {"text": "hacs/action@main 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": "high", "confidence": 1.0}}, {"id": "scanner-6893a6c8b0861585", "name": "Very low test-to-source ratio", "shortDescription": {"text": "Very low test-to-source ratio"}, "fullDescription": {"text": "0 test file(s) for 38 source file(s) (ratio 0.00). Consider adding integration or unit tests for critical paths."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-11825279136b53a3", "name": "CI is configured but no tests are detected", "shortDescription": {"text": "CI is configured but no tests are detected"}, "fullDescription": {"text": "A CI pipeline exists, but the scan found no test files to gate. Opus labeled this generated-code pattern as config theater: release machinery exists, but it has little behavioral signal."}, "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-882df74db44760c7", "name": "Commented-code block (6 lines) in custom_components/revotion/mqtt_client.py:44", "shortDescription": {"text": "Commented-code block (6 lines) in custom_components/revotion/mqtt_client.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-04da70cc069a62c0", "name": "Commented-code block (7 lines) in custom_components/revotion/binary_sensor.py:130", "shortDescription": {"text": "Commented-code block (7 lines) in custom_components/revotion/binary_sensor.py:130"}, "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-bd92160c919a105f", "name": "Commented-code block (5 lines) in custom_components/revotion/cover.py:71", "shortDescription": {"text": "Commented-code block (5 lines) in custom_components/revotion/cover.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-00cf4600abd5ccb9", "name": "Commented-code block (5 lines) in custom_components/revotion/climate.py:405", "shortDescription": {"text": "Commented-code block (5 lines) in custom_components/revotion/climate.py:405"}, "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-3450d2e0c3cf9344", "name": "Commented-code block (8 lines) in custom_components/revotion/sensor.py:903", "shortDescription": {"text": "Commented-code block (8 lines) in custom_components/revotion/sensor.py:903"}, "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-a7c47de6814428e0", "name": "Commented-code block (6 lines) in custom_components/revotion/coordinator.py:345", "shortDescription": {"text": "Commented-code block (6 lines) in custom_components/revotion/coordinator.py:345"}, "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-2e01404105a096b2", "name": "Commented-code block (5 lines) in custom_components/revotion/select.py:176", "shortDescription": {"text": "Commented-code block (5 lines) in custom_components/revotion/select.py:176"}, "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-7bba28760097bd29", "name": "Commented-code block (6 lines) in custom_components/revotion/switch.py:321", "shortDescription": {"text": "Commented-code block (6 lines) in custom_components/revotion/switch.py:321"}, "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-02d31236205c03b9", "name": "Commented-code block (5 lines) in custom_components/revotion/light.py:663", "shortDescription": {"text": "Commented-code block (5 lines) in custom_components/revotion/light.py:663"}, "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-585d6aba4e8a7e35", "name": "Commented-code block (5 lines) in custom_components/revotion/connect/__init__.py:34", "shortDescription": {"text": "Commented-code block (5 lines) in custom_components/revotion/connect/__init__.py:34"}, "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-90421a11d32d8c8e", "name": "Commented-code block (5 lines) in custom_components/revotion/connect/discovery.py:35", "shortDescription": {"text": "Commented-code block (5 lines) in custom_components/revotion/connect/discovery.py:35"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d3c877901500736a", "name": "Commented-code block (5 lines) in custom_components/revotion/connect/devices/truma_cpp.py:280", "shortDescription": {"text": "Commented-code block (5 lines) in custom_components/revotion/connect/devices/truma_cpp.py:280"}, "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-1a7bda1e835134be", "name": "Commented-code block (5 lines) in custom_components/revotion/connect/devices/thitronik.py:152", "shortDescription": {"text": "Commented-code block (5 lines) in custom_components/revotion/connect/devices/thitronik.py:152"}, "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-0027e313ade46c8f", "name": "Near-duplicate function bodies in 7 places", "shortDescription": {"text": "Near-duplicate function bodies in 7 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\ncustom_components/revotion/binary_sensor.py:is_on, custom_components/revotion/binary_sensor.py:is_on, custom_components/revotion/binary_sensor.py:is_on, custom_components/revotion/binary_sensor.py:is_on\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-02525d39071dd2c7", "name": "Near-duplicate function bodies in 5 places", "shortDescription": {"text": "Near-duplicate function bodies in 5 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\ncustom_components/revotion/binary_sensor.py:available, custom_components/revotion/binary_sensor.py:available, custom_components/revotion/binary_sensor.py:available, custom_components/revotion/binary_sensor.py:available\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:\ncustom_components/revotion/climate.py:hvac_modes, custom_components/revotion/climate.py:hvac_mode\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-33a6b62e30ce7ab4", "name": "Near-duplicate function bodies in 6 places", "shortDescription": {"text": "Near-duplicate function bodies in 6 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\ncustom_components/revotion/sensor.py:available, custom_components/revotion/sensor.py:available, custom_components/revotion/sensor.py:available, custom_components/revotion/sensor.py:available\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-76a2f6818267a9a8", "name": "Near-duplicate function bodies in 8 places", "shortDescription": {"text": "Near-duplicate function bodies in 8 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\ncustom_components/revotion/sensor.py:native_value, custom_components/revotion/sensor.py:native_value, custom_components/revotion/sensor.py:native_value, custom_components/revotion/sensor.py:native_value\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/18065"}, "properties": {"repository": "RevotionGmbH/homeassistant-revotion", "repoUrl": "https://github.com/RevotionGmbH/homeassistant-revotion", "branch": "main"}, "results": [{"ruleId": "scanner-f1e6ad9cc5f70bcf", "level": "note", "message": {"text": "Possibly dead Python function: async_setup_entry"}, "properties": {"repobilityId": "c8b792a45e339d83", "scanner": "scanner-primary", "fingerprint": "f1e6ad9cc5f70bcf", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "custom_components/revotion/__init__.py:40"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-0f328ef2e2ed8a85", "level": "note", "message": {"text": "Possibly dead Python function: async_unload_entry"}, "properties": {"repobilityId": "30a9c97872d972d2", "scanner": "scanner-primary", "fingerprint": "0f328ef2e2ed8a85", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "custom_components/revotion/__init__.py:131"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-b5851a44ae52d7c5", "level": "note", "message": {"text": "Possibly dead Python function: async_remove_config_entry_device"}, "properties": {"repobilityId": "54d7e7ebcc16f5db", "scanner": "scanner-primary", "fingerprint": "b5851a44ae52d7c5", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "custom_components/revotion/__init__.py:141"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-40c853590f24d54a", "level": "note", "message": {"text": "Possibly dead Python function: async_setup_entry"}, "properties": {"repobilityId": "c8b792a45e339d83", "scanner": "scanner-primary", "fingerprint": "40c853590f24d54a", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "custom_components/revotion/binary_sensor.py:62"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-c532a6a1ce32710e", "level": "note", "message": {"text": "Possibly dead Python function: async_get_config_entry_diagnostics"}, "properties": {"repobilityId": "30b926b23d28c658", "scanner": "scanner-primary", "fingerprint": "c532a6a1ce32710e", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "custom_components/revotion/diagnostics.py:76"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-9bd79af5af561b68", "level": "note", "message": {"text": "Possibly dead Python function: async_open_cover"}, "properties": {"repobilityId": "57e82b4ae989594a", "scanner": "scanner-primary", "fingerprint": "9bd79af5af561b68", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "custom_components/revotion/cover.py:228"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-70a0d851e6484da1", "level": "note", "message": {"text": "Possibly dead Python function: async_close_cover"}, "properties": {"repobilityId": "3ba8e29c071d196a", "scanner": "scanner-primary", "fingerprint": "70a0d851e6484da1", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "custom_components/revotion/cover.py:236"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-77b0d06ecffdbfb5", "level": "note", "message": {"text": "Possibly dead Python function: async_stop_cover"}, "properties": {"repobilityId": "ae57baaf6a9c0bc0", "scanner": "scanner-primary", "fingerprint": "77b0d06ecffdbfb5", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "custom_components/revotion/cover.py:244"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-c4afba4b6d494292", "level": "note", "message": {"text": "Possibly dead Python function: async_setup_entry"}, "properties": {"repobilityId": "c8b792a45e339d83", "scanner": "scanner-primary", "fingerprint": "c4afba4b6d494292", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "custom_components/revotion/cover.py:253"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d1b4fbcd254f77de", "level": "note", "message": {"text": "Possibly dead Python function: async_set_hvac_mode"}, "properties": {"repobilityId": "006d638c10e2a22d", "scanner": "scanner-primary", "fingerprint": "d1b4fbcd254f77de", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "custom_components/revotion/climate.py:346"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-317b748c4c804b13", "level": "note", "message": {"text": "Possibly dead Python function: async_set_temperature"}, "properties": {"repobilityId": "300adec7412205cc", "scanner": "scanner-primary", "fingerprint": "317b748c4c804b13", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "custom_components/revotion/climate.py:360"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-ec517a0fa148e0b2", "level": "note", "message": {"text": "Possibly dead Python function: async_set_fan_mode"}, "properties": {"repobilityId": "fa082ee4b6becc0d", "scanner": "scanner-primary", "fingerprint": "ec517a0fa148e0b2", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "custom_components/revotion/climate.py:369"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-8a627f4f13a9a011", "level": "note", "message": {"text": "Possibly dead Python function: async_setup_entry"}, "properties": {"repobilityId": "c8b792a45e339d83", "scanner": "scanner-primary", "fingerprint": "8a627f4f13a9a011", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "custom_components/revotion/climate.py:395"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-6b3893e38ce01ab1", "level": "note", "message": {"text": "Possibly dead Python function: async_step_user"}, "properties": {"repobilityId": "3e711d68888368f0", "scanner": "scanner-primary", "fingerprint": "6b3893e38ce01ab1", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "custom_components/revotion/config_flow.py:93"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-cd6af8b1ba0ecf22", "level": "note", "message": {"text": "Possibly dead Python function: async_step_reauth"}, "properties": {"repobilityId": "1f04196cd1578c85", "scanner": "scanner-primary", "fingerprint": "cd6af8b1ba0ecf22", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "custom_components/revotion/config_flow.py:150"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-7fe94c81992e1af7", "level": "note", "message": {"text": "Possibly dead Python function: async_setup_entry"}, "properties": {"repobilityId": "c8b792a45e339d83", "scanner": "scanner-primary", "fingerprint": "7fe94c81992e1af7", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "custom_components/revotion/sensor.py:755"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-4e65dd2ea913dfac", "level": "note", "message": {"text": "Possibly dead Python function: async_select_option"}, "properties": {"repobilityId": "774b9c27c960d04f", "scanner": "scanner-primary", "fingerprint": "4e65dd2ea913dfac", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "custom_components/revotion/select.py:150"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a5857b40d4f39fa2", "level": "note", "message": {"text": "Possibly dead Python function: async_setup_entry"}, "properties": {"repobilityId": "c8b792a45e339d83", "scanner": "scanner-primary", "fingerprint": "a5857b40d4f39fa2", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "custom_components/revotion/select.py:166"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-6a2a5bd0aea0588e", "level": "note", "message": {"text": "Possibly dead Python function: async_press"}, "properties": {"repobilityId": "6ab8b39b52db459f", "scanner": "scanner-primary", "fingerprint": "6a2a5bd0aea0588e", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "custom_components/revotion/button.py:108"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-4022e35e8dedb0a6", "level": "note", "message": {"text": "Possibly dead Python function: async_setup_entry"}, "properties": {"repobilityId": "c8b792a45e339d83", "scanner": "scanner-primary", "fingerprint": "4022e35e8dedb0a6", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "custom_components/revotion/button.py:113"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-6c6d22617b0031c7", "level": "note", "message": {"text": "Possibly dead Python function: async_lock"}, "properties": {"repobilityId": "912c9496433d01ed", "scanner": "scanner-primary", "fingerprint": "6c6d22617b0031c7", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "custom_components/revotion/lock.py:145"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-5cb2e8de1eac945c", "level": "note", "message": {"text": "Possibly dead Python function: async_unlock"}, "properties": {"repobilityId": "f1d789782cb74b8e", "scanner": "scanner-primary", "fingerprint": "5cb2e8de1eac945c", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "custom_components/revotion/lock.py:151"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f5cd540ae39a7348", "level": "note", "message": {"text": "Possibly dead Python function: async_setup_entry"}, "properties": {"repobilityId": "c8b792a45e339d83", "scanner": "scanner-primary", "fingerprint": "f5cd540ae39a7348", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "custom_components/revotion/lock.py:158"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-da7ae3597a91ec22", "level": "note", "message": {"text": "Possibly dead Python function: async_turn_on"}, "properties": {"repobilityId": "b33cc9153eec2f7e", "scanner": "scanner-primary", "fingerprint": "da7ae3597a91ec22", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "custom_components/revotion/switch.py:417"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-8f91ebee206c0a55", "level": "note", "message": {"text": "Possibly dead Python function: async_turn_off"}, "properties": {"repobilityId": "284a7b930f5bb2f8", "scanner": "scanner-primary", "fingerprint": "8f91ebee206c0a55", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "custom_components/revotion/switch.py:423"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-6403562a95cb26e2", "level": "note", "message": {"text": "Possibly dead Python function: async_setup_entry"}, "properties": {"repobilityId": "c8b792a45e339d83", "scanner": "scanner-primary", "fingerprint": "6403562a95cb26e2", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "custom_components/revotion/switch.py:430"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-fe64e9848def4d95", "level": "note", "message": {"text": "Possibly dead Python function: async_set_native_value"}, "properties": {"repobilityId": "f56f8bc2e0a269b2", "scanner": "scanner-primary", "fingerprint": "fe64e9848def4d95", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "custom_components/revotion/number.py:130"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-ec2b8dfb8fa81ad6", "level": "note", "message": {"text": "Possibly dead Python function: async_setup_entry"}, "properties": {"repobilityId": "c8b792a45e339d83", "scanner": "scanner-primary", "fingerprint": "ec2b8dfb8fa81ad6", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "custom_components/revotion/number.py:144"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d0d6ab93a46a5408", "level": "note", "message": {"text": "Possibly dead Python function: async_turn_on"}, "properties": {"repobilityId": "b33cc9153eec2f7e", "scanner": "scanner-primary", "fingerprint": "d0d6ab93a46a5408", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "custom_components/revotion/light.py:598"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-0b2809481b36e000", "level": "note", "message": {"text": "Possibly dead Python function: async_turn_off"}, "properties": {"repobilityId": "284a7b930f5bb2f8", "scanner": "scanner-primary", "fingerprint": "0b2809481b36e000", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "custom_components/revotion/light.py:607"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-9710c8d059e53154", "level": "none", "message": {"text": "No frontend routes/components detected"}, "properties": {"repobilityId": "44ca61485762e494", "scanner": "scanner-primary", "fingerprint": "9710c8d059e53154", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["coverage"]}}, {"ruleId": "scanner-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-d39e2952d8ce5587", "level": "error", "message": {"text": "GitHub Action tracks a moving branch"}, "properties": {"repobilityId": "a1c3383c9b664e28", "scanner": "scanner-primary", "fingerprint": "d39e2952d8ce5587", "layer": "cicd", "severity": "high", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/validate.yml"}, "region": {"startLine": 45}}}]}, {"ruleId": "scanner-6893a6c8b0861585", "level": "warning", "message": {"text": "Very low test-to-source ratio"}, "properties": {"repobilityId": "54a7de3f06314bf0", "scanner": "scanner-primary", "fingerprint": "6893a6c8b0861585", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["tests", "coverage"]}}, {"ruleId": "scanner-11825279136b53a3", "level": "warning", "message": {"text": "CI is configured but no tests are detected"}, "properties": {"repobilityId": "b4180382ed85cab5", "scanner": "scanner-primary", "fingerprint": "11825279136b53a3", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["tests", "ci", "config-theater", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-ea8f3013f588db25", "level": "note", "message": {"text": "Shallow git history limits provenance confidence"}, "properties": {"repobilityId": "15aac383b19b4fd9", "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": "2c48b07aeae5edbb", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-882df74db44760c7", "level": "none", "message": {"text": "Commented-code block (6 lines) in custom_components/revotion/mqtt_client.py:44"}, "properties": {"repobilityId": "15061e2d9a11c672", "scanner": "scanner-primary", "fingerprint": "882df74db44760c7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-04da70cc069a62c0", "level": "none", "message": {"text": "Commented-code block (7 lines) in custom_components/revotion/binary_sensor.py:130"}, "properties": {"repobilityId": "e4959d0ec456d21d", "scanner": "scanner-primary", "fingerprint": "04da70cc069a62c0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bd92160c919a105f", "level": "none", "message": {"text": "Commented-code block (5 lines) in custom_components/revotion/cover.py:71"}, "properties": {"repobilityId": "20178d89bf7d3b90", "scanner": "scanner-primary", "fingerprint": "bd92160c919a105f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-00cf4600abd5ccb9", "level": "none", "message": {"text": "Commented-code block (5 lines) in custom_components/revotion/climate.py:405"}, "properties": {"repobilityId": "bf6a35e8b2787260", "scanner": "scanner-primary", "fingerprint": "00cf4600abd5ccb9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3450d2e0c3cf9344", "level": "none", "message": {"text": "Commented-code block (8 lines) in custom_components/revotion/sensor.py:903"}, "properties": {"repobilityId": "f71d5bad12dd1d74", "scanner": "scanner-primary", "fingerprint": "3450d2e0c3cf9344", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a7c47de6814428e0", "level": "none", "message": {"text": "Commented-code block (6 lines) in custom_components/revotion/coordinator.py:345"}, "properties": {"repobilityId": "bc883b60a1894ca6", "scanner": "scanner-primary", "fingerprint": "a7c47de6814428e0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2e01404105a096b2", "level": "none", "message": {"text": "Commented-code block (5 lines) in custom_components/revotion/select.py:176"}, "properties": {"repobilityId": "199b49252eb6ff79", "scanner": "scanner-primary", "fingerprint": "2e01404105a096b2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7bba28760097bd29", "level": "none", "message": {"text": "Commented-code block (6 lines) in custom_components/revotion/switch.py:321"}, "properties": {"repobilityId": "0ed5e1fedeb61a2a", "scanner": "scanner-primary", "fingerprint": "7bba28760097bd29", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-02d31236205c03b9", "level": "none", "message": {"text": "Commented-code block (5 lines) in custom_components/revotion/light.py:663"}, "properties": {"repobilityId": "c9a0adfc2d048c07", "scanner": "scanner-primary", "fingerprint": "02d31236205c03b9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-585d6aba4e8a7e35", "level": "none", "message": {"text": "Commented-code block (5 lines) in custom_components/revotion/connect/__init__.py:34"}, "properties": {"repobilityId": "5c2d32ab4dfde47f", "scanner": "scanner-primary", "fingerprint": "585d6aba4e8a7e35", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-90421a11d32d8c8e", "level": "none", "message": {"text": "Commented-code block (5 lines) in custom_components/revotion/connect/discovery.py:35"}, "properties": {"repobilityId": "ec28cf6b2ffedc5f", "scanner": "scanner-primary", "fingerprint": "90421a11d32d8c8e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d3c877901500736a", "level": "none", "message": {"text": "Commented-code block (5 lines) in custom_components/revotion/connect/devices/truma_cpp.py:280"}, "properties": {"repobilityId": "0be102d5800178f7", "scanner": "scanner-primary", "fingerprint": "d3c877901500736a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1a7bda1e835134be", "level": "none", "message": {"text": "Commented-code block (5 lines) in custom_components/revotion/connect/devices/thitronik.py:152"}, "properties": {"repobilityId": "68b7972d59b34f29", "scanner": "scanner-primary", "fingerprint": "1a7bda1e835134be", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0027e313ade46c8f", "level": "note", "message": {"text": "Near-duplicate function bodies in 7 places"}, "properties": {"repobilityId": "66347bf8269f1fc8", "scanner": "scanner-primary", "fingerprint": "0027e313ade46c8f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-02525d39071dd2c7", "level": "note", "message": {"text": "Near-duplicate function bodies in 5 places"}, "properties": {"repobilityId": "2585466c48a9e3a8", "scanner": "scanner-primary", "fingerprint": "02525d39071dd2c7", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "20a5fbd24e58f7fb", "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": "30bdcee85c4f28c4", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-33a6b62e30ce7ab4", "level": "note", "message": {"text": "Near-duplicate function bodies in 6 places"}, "properties": {"repobilityId": "f52cc06bff223911", "scanner": "scanner-primary", "fingerprint": "33a6b62e30ce7ab4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-76a2f6818267a9a8", "level": "note", "message": {"text": "Near-duplicate function bodies in 8 places"}, "properties": {"repobilityId": "94a5e9b5fd12da2d", "scanner": "scanner-primary", "fingerprint": "76a2f6818267a9a8", "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": "88f03d80c11aeb6a", "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": "a9b658df5561b070", "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": "9e0b79990aedcb40", "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": "aabe27069cb41655", "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": "b5200ae17632efef", "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": "0f222b25f7b97c9b", "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": "11c94fb0dd8f9e95", "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": "88ba24ca0867c98d", "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": "99a8a0f22e1f3e37", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}]}]}