{"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-e4728e36c250f9e6", "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-1e635937d372a42f", "name": "Possibly dead Python function: async_step_init", "shortDescription": {"text": "Possibly dead Python function: async_step_init"}, "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-95362d2a5f0578ac", "name": "Possibly dead Python function: async_step_reconfigure", "shortDescription": {"text": "Possibly dead Python function: async_step_reconfigure"}, "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-3365993236ab716d", "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-fb50de0cefec1312", "name": "Possibly dead Python function: async_added_to_hass", "shortDescription": {"text": "Possibly dead Python function: async_added_to_hass"}, "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-632ca278543fac7d", "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-24a7c0e9a0cb481e", "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-167738aceea12c96", "name": "Possibly dead Python function: async_added_to_hass", "shortDescription": {"text": "Possibly dead Python function: async_added_to_hass"}, "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-03a7fefe2e9898c6", "name": "Possibly dead Python function: current_window_duration_s", "shortDescription": {"text": "Possibly dead Python function: current_window_duration_s"}, "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-9df34684c0903f45", "name": "Possibly dead Python function: last_closed_window", "shortDescription": {"text": "Possibly dead Python function: last_closed_window"}, "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-e259367aaf673b8f", "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-b312b08bac297915", "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-a1838a7d667cf2cc", "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-a8d8778ac5e55c68", "name": "Possibly dead Python function: async_added_to_hass", "shortDescription": {"text": "Possibly dead Python function: async_added_to_hass"}, "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-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-1a50467f36b413ec", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "astral-sh/setup-uv@v7 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": "medium", "confidence": 1.0}}, {"id": "scanner-b2f2ee938de57f51", "name": "Very large file: tests/test_session_engine_restart.py (1473 lines)", "shortDescription": {"text": "Very large file: tests/test_session_engine_restart.py (1473 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-c3fd6c87bf91be9d", "name": "Very large file: tests/test_session_engine.py (3229 lines)", "shortDescription": {"text": "Very large file: tests/test_session_engine.py (3229 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-037f3479e4537839", "name": "Very large file: custom_components/ev_charging_manager/config_flow.py (1487 lines)", "shortDescription": {"text": "Very large file: custom_components/ev_charging_manager/config_flow.py (1487 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-8ed7996adb661bd9", "name": "Very large file: custom_components/ev_charging_manager/session_engine_v2.py (3226 lines)", "shortDescription": {"text": "Very large file: custom_components/ev_charging_manager/session_engine_v2.py (3226 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-fe713977fbb30dcf", "name": "Very large file: custom_components/ev_charging_manager/session_engine.py (1439 lines)", "shortDescription": {"text": "Very large file: custom_components/ev_charging_manager/session_engine.py (1439 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-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-20dd7d39d8eec9a4", "name": "Legacy-named symbol `session_engine_v2` in tests/test_session_engine_race_regression.py:24", "shortDescription": {"text": "Legacy-named symbol `session_engine_v2` in tests/test_session_engine_race_regression.py:24"}, "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-8e250fb5395b0ee3", "name": "Legacy-named symbol `session_engine_v2` in tests/test_binary_sensor.py:32", "shortDescription": {"text": "Legacy-named symbol `session_engine_v2` in tests/test_binary_sensor.py:32"}, "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-d7add34f574d62ab", "name": "Legacy-named symbol `snap_old` in tests/test_session_store.py:135", "shortDescription": {"text": "Legacy-named symbol `snap_old` in tests/test_session_store.py:135"}, "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-7911d66fcd81c7ec", "name": "Legacy-named symbol `session_engine_v2` in tests/test_session_engine_plug_anchored.py:8", "shortDescription": {"text": "Legacy-named symbol `session_engine_v2` in tests/test_session_engine_plug_anchored.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-ad7870eb70f57cf2", "name": "Legacy-named symbol `session_engine_v2` in tests/test_session_engine_v2_cable_lock_race.py:37", "shortDescription": {"text": "Legacy-named symbol `session_engine_v2` in tests/test_session_engine_v2_cable_lock_race.py:37"}, "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-9d98e9acd11b041c", "name": "Legacy-named symbol `session_engine_v2` in tests/test_status_sensor_lifecycle.py:30", "shortDescription": {"text": "Legacy-named symbol `session_engine_v2` in tests/test_status_sensor_lifecycle.py:30"}, "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-94ee788f808a863b", "name": "Commented-code block (5 lines) in tests/conftest.py:15", "shortDescription": {"text": "Commented-code block (5 lines) in tests/conftest.py:15"}, "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-ac4e838892dcc4b5", "name": "Legacy-named symbol `session_engine_v2` in tests/test_session_engine_disconnect.py:33", "shortDescription": {"text": "Legacy-named symbol `session_engine_v2` in tests/test_session_engine_disconnect.py:33"}, "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-526af8bd894a59e3", "name": "Legacy-named symbol `session_engine_v2` in tests/test_status_sensor_sub_states.py:48", "shortDescription": {"text": "Legacy-named symbol `session_engine_v2` in tests/test_status_sensor_sub_states.py:48"}, "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-8af51e6e96a72700", "name": "Legacy-named symbol `session_engine_v2` in tests/test_session_engine_rfid_wait.py:53", "shortDescription": {"text": "Legacy-named symbol `session_engine_v2` in tests/test_session_engine_rfid_wait.py:53"}, "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-5aa676b071d7d565", "name": "Legacy-named symbol `session_engine_v2` in tests/test_unknown_rfid_notification.py:37", "shortDescription": {"text": "Legacy-named symbol `session_engine_v2` in tests/test_unknown_rfid_notification.py:37"}, "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-5383e24e6e917688", "name": "Legacy-named symbol `session_engine_v2` in tests/test_session_engine_heartbeat.py:41", "shortDescription": {"text": "Legacy-named symbol `session_engine_v2` in tests/test_session_engine_heartbeat.py:41"}, "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-a54b939eedfe08ac", "name": "Legacy-named symbol `session_engine_v2` in tests/test_session_engine_bugfixes.py:42", "shortDescription": {"text": "Legacy-named symbol `session_engine_v2` in tests/test_session_engine_bugfixes.py:42"}, "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-53d4d41bcff2acdc", "name": "Legacy-named symbol `data_copy` in tests/test_storage_migration_v1_to_v2.py:189", "shortDescription": {"text": "Legacy-named symbol `data_copy` in tests/test_storage_migration_v1_to_v2.py:189"}, "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-f8322494cc06b85d", "name": "Legacy-named symbol `session_engine_v2` in tests/test_charging_duration_sensor.py:41", "shortDescription": {"text": "Legacy-named symbol `session_engine_v2` in tests/test_charging_duration_sensor.py:41"}, "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-29a99afa0740dd10", "name": "Legacy-named symbol `session_engine_v2` in tests/test_session_engine_guest.py:26", "shortDescription": {"text": "Legacy-named symbol `session_engine_v2` in tests/test_session_engine_guest.py:26"}, "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-df2d20726cb60792", "name": "Legacy-named symbol `session_engine_v2` in tests/test_session_engine_replay.py:28", "shortDescription": {"text": "Legacy-named symbol `session_engine_v2` in tests/test_session_engine_replay.py:28"}, "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-d096ad777838ce8c", "name": "Legacy-named symbol `session_engine_v2` in tests/test_session_engine_micro_filter.py:25", "shortDescription": {"text": "Legacy-named symbol `session_engine_v2` in tests/test_session_engine_micro_filter.py:25"}, "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-446ae64d9bad5e58", "name": "Legacy-named symbol `session_engine_v2` in tests/test_session_recovery.py:710", "shortDescription": {"text": "Legacy-named symbol `session_engine_v2` in tests/test_session_recovery.py:710"}, "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-73e4169c27144574", "name": "Legacy-named symbol `session_engine_v2` in tests/test_session_engine_restart.py:45", "shortDescription": {"text": "Legacy-named symbol `session_engine_v2` in tests/test_session_engine_restart.py:45"}, "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-b57f569322bce710", "name": "Commented-code block (8 lines) in tests/test_session_engine_restart.py:1046", "shortDescription": {"text": "Commented-code block (8 lines) in tests/test_session_engine_restart.py:1046"}, "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-c10e6384582383a9", "name": "Legacy-named symbol `session_engine_v2` in tests/test_session_engine_overnight.py:30", "shortDescription": {"text": "Legacy-named symbol `session_engine_v2` in tests/test_session_engine_overnight.py:30"}, "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-c88753d6f66b2f59", "name": "Legacy-named symbol `session_engine_v2` in tests/test_session_engine_charger_outage.py:29", "shortDescription": {"text": "Legacy-named symbol `session_engine_v2` in tests/test_session_engine_charger_outage.py:29"}, "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-051c01225465f2eb", "name": "Legacy-named symbol `session_engine_v2` in tests/test_spot_hour_capture.py:40", "shortDescription": {"text": "Legacy-named symbol `session_engine_v2` in tests/test_spot_hour_capture.py:40"}, "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-e2f7131aafc9e601", "name": "Commented-code block (5 lines) in custom_components/ev_charging_manager/config_flow.py:715", "shortDescription": {"text": "Commented-code block (5 lines) in custom_components/ev_charging_manager/config_flow.py:715"}, "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-757aedf0ccdee245", "name": "Commented-code block (15 lines) in custom_components/ev_charging_manager/session.py:98", "shortDescription": {"text": "Commented-code block (15 lines) in custom_components/ev_charging_manager/session.py:98"}, "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-c20f850b9c29c5f1", "name": "Legacy-named symbol `session_engine_v2` in custom_components/ev_charging_manager/const.py:258", "shortDescription": {"text": "Legacy-named symbol `session_engine_v2` in custom_components/ev_charging_manager/const.py:258"}, "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-28ebc02698968051", "name": "Commented-code block (6 lines) in custom_components/ev_charging_manager/const.py:114", "shortDescription": {"text": "Commented-code block (6 lines) in custom_components/ev_charging_manager/const.py:114"}, "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-0d5046ade75cb08a", "name": "Legacy-named symbol `session_engine_v2` in custom_components/ev_charging_manager/__init__.py:29", "shortDescription": {"text": "Legacy-named symbol `session_engine_v2` in custom_components/ev_charging_manager/__init__.py:29"}, "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-c35353c573be3294", "name": "Commented-code block (6 lines) in custom_components/ev_charging_manager/__init__.py:132", "shortDescription": {"text": "Commented-code block (6 lines) in custom_components/ev_charging_manager/__init__.py:132"}, "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-fa3435440e92a52d", "name": "Commented-code block (6 lines) in custom_components/ev_charging_manager/session_engine_v2.py:3", "shortDescription": {"text": "Commented-code block (6 lines) in custom_components/ev_charging_manager/session_engine_v2.py:3"}, "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-5c168bc9b628cd7f", "name": "Commented-code block (8 lines) in custom_components/ev_charging_manager/session_store.py:170", "shortDescription": {"text": "Commented-code block (8 lines) in custom_components/ev_charging_manager/session_store.py:170"}, "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-d9b7bed65dcfb04d", "name": "Commented-code block (19 lines) in custom_components/ev_charging_manager/charger_profiles.py:7", "shortDescription": {"text": "Commented-code block (19 lines) in custom_components/ev_charging_manager/charger_profiles.py:7"}, "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-ef39e93fafea13d3", "name": "Commented-code block (5 lines) in custom_components/ev_charging_manager/config_store.py:98", "shortDescription": {"text": "Commented-code block (5 lines) in custom_components/ev_charging_manager/config_store.py:98"}, "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-560aa41b1f129adc", "name": "Commented-code block (6 lines) in custom_components/ev_charging_manager/session_engine.py:135", "shortDescription": {"text": "Commented-code block (6 lines) in custom_components/ev_charging_manager/session_engine.py:135"}, "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-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:\ncustom_components/ev_charging_manager/config_flow.py:async_step_user, custom_components/ev_charging_manager/config_flow.py:async_step_user, custom_components/ev_charging_manager/config_flow.py:async_step_user, custom_components/ev_charging_manager/config_flow.py:async_step_user\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/ev_charging_manager/config_flow.py:async_step_pricing, custom_components/ev_charging_manager/config_flow.py:async_step_pricing\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:\ncustom_components/ev_charging_manager/config_flow.py:async_step_reconfigure, custom_components/ev_charging_manager/config_flow.py:async_step_reconfigure, custom_components/ev_charging_manager/config_flow.py:async_step_reconfigure\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/ev_charging_manager/sensor.py:available, custom_components/ev_charging_manager/sensor.py:available, custom_components/ev_charging_manager/sensor.py:available, custom_components/ev_charging_manager/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-fe1d9311d6aee734", "name": "Near-duplicate function bodies in 12 places", "shortDescription": {"text": "Near-duplicate function bodies in 12 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\ncustom_components/ev_charging_manager/sensor.py:native_value, custom_components/ev_charging_manager/sensor.py:native_value, custom_components/ev_charging_manager/sensor.py:native_value, custom_components/ev_charging_manager/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}}, {"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/ev_charging_manager/sensor.py:extra_state_attributes, custom_components/ev_charging_manager/sensor.py:extra_state_attributes, custom_components/ev_charging_manager/sensor.py:extra_state_attributes, custom_components/ev_charging_manager/sensor.py:extra_state_attributes\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/ev_charging_manager/stats_sensor.py:available, custom_components/ev_charging_manager/stats_sensor.py:available, custom_components/ev_charging_manager/stats_sensor.py:available, custom_components/ev_charging_manager/stats_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-46969939caf8120b", "name": "Near-duplicate function bodies in 9 places", "shortDescription": {"text": "Near-duplicate function bodies in 9 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\ncustom_components/ev_charging_manager/stats_sensor.py:native_value, custom_components/ev_charging_manager/stats_sensor.py:native_value, custom_components/ev_charging_manager/stats_sensor.py:native_value, custom_components/ev_charging_manager/stats_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/25140"}, "properties": {"repository": "cryptotomte/ev-charging-manager", "repoUrl": "https://github.com/cryptotomte/ev-charging-manager", "branch": "main"}, "results": [{"ruleId": "scanner-e4728e36c250f9e6", "level": "note", "message": {"text": "Possibly dead Python function: async_step_user"}, "properties": {"repobilityId": "3e711d68888368f0", "scanner": "scanner-primary", "fingerprint": "e4728e36c250f9e6", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "custom_components/ev_charging_manager/config_flow.py:1181"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-1e635937d372a42f", "level": "note", "message": {"text": "Possibly dead Python function: async_step_init"}, "properties": {"repobilityId": "a2d8666a207dd7f1", "scanner": "scanner-primary", "fingerprint": "1e635937d372a42f", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "custom_components/ev_charging_manager/config_flow.py:513"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-95362d2a5f0578ac", "level": "note", "message": {"text": "Possibly dead Python function: async_step_reconfigure"}, "properties": {"repobilityId": "a3eaee0466e0054e", "scanner": "scanner-primary", "fingerprint": "95362d2a5f0578ac", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "custom_components/ev_charging_manager/config_flow.py:1429"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3365993236ab716d", "level": "note", "message": {"text": "Possibly dead Python function: async_setup_entry"}, "properties": {"repobilityId": "c8b792a45e339d83", "scanner": "scanner-primary", "fingerprint": "3365993236ab716d", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "custom_components/ev_charging_manager/sensor.py:44"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-fb50de0cefec1312", "level": "note", "message": {"text": "Possibly dead Python function: async_added_to_hass"}, "properties": {"repobilityId": "37ec6aed70dce0d3", "scanner": "scanner-primary", "fingerprint": "fb50de0cefec1312", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "custom_components/ev_charging_manager/sensor.py:102"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-632ca278543fac7d", "level": "note", "message": {"text": "Possibly dead Python function: async_setup_entry"}, "properties": {"repobilityId": "c8b792a45e339d83", "scanner": "scanner-primary", "fingerprint": "632ca278543fac7d", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "custom_components/ev_charging_manager/__init__.py:82"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-24a7c0e9a0cb481e", "level": "note", "message": {"text": "Possibly dead Python function: async_unload_entry"}, "properties": {"repobilityId": "30a9c97872d972d2", "scanner": "scanner-primary", "fingerprint": "24a7c0e9a0cb481e", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "custom_components/ev_charging_manager/__init__.py:196"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-167738aceea12c96", "level": "note", "message": {"text": "Possibly dead Python function: async_added_to_hass"}, "properties": {"repobilityId": "37ec6aed70dce0d3", "scanner": "scanner-primary", "fingerprint": "167738aceea12c96", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "custom_components/ev_charging_manager/stats_sensor.py:58"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-03a7fefe2e9898c6", "level": "note", "message": {"text": "Possibly dead Python function: current_window_duration_s"}, "properties": {"repobilityId": "5beaa779db46f2da", "scanner": "scanner-primary", "fingerprint": "03a7fefe2e9898c6", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "custom_components/ev_charging_manager/charging_window.py:281"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-9df34684c0903f45", "level": "note", "message": {"text": "Possibly dead Python function: last_closed_window"}, "properties": {"repobilityId": "433abe7e63e59b73", "scanner": "scanner-primary", "fingerprint": "9df34684c0903f45", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "custom_components/ev_charging_manager/charging_window.py:287"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e259367aaf673b8f", "level": "note", "message": {"text": "Possibly dead Python function: async_setup_entry"}, "properties": {"repobilityId": "c8b792a45e339d83", "scanner": "scanner-primary", "fingerprint": "e259367aaf673b8f", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "custom_components/ev_charging_manager/button.py:20"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-b312b08bac297915", "level": "note", "message": {"text": "Possibly dead Python function: async_press"}, "properties": {"repobilityId": "6ab8b39b52db459f", "scanner": "scanner-primary", "fingerprint": "b312b08bac297915", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "custom_components/ev_charging_manager/button.py:51"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a1838a7d667cf2cc", "level": "note", "message": {"text": "Possibly dead Python function: async_setup_entry"}, "properties": {"repobilityId": "c8b792a45e339d83", "scanner": "scanner-primary", "fingerprint": "a1838a7d667cf2cc", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "custom_components/ev_charging_manager/binary_sensor.py:18"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a8d8778ac5e55c68", "level": "note", "message": {"text": "Possibly dead Python function: async_added_to_hass"}, "properties": {"repobilityId": "37ec6aed70dce0d3", "scanner": "scanner-primary", "fingerprint": "a8d8778ac5e55c68", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "custom_components/ev_charging_manager/binary_sensor.py:49"}, "region": {"startLine": 1}}}]}, {"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-1a50467f36b413ec", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "0cfd305f49a8f426", "scanner": "scanner-primary", "fingerprint": "1a50467f36b413ec", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/tests.yml"}, "region": {"startLine": 30}}}]}, {"ruleId": "scanner-b2f2ee938de57f51", "level": "note", "message": {"text": "Very large file: tests/test_session_engine_restart.py (1473 lines)"}, "properties": {"repobilityId": "e3684fe1d1bb0c40", "scanner": "scanner-primary", "fingerprint": "b2f2ee938de57f51", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-c3fd6c87bf91be9d", "level": "note", "message": {"text": "Very large file: tests/test_session_engine.py (3229 lines)"}, "properties": {"repobilityId": "32359e4738bd38fa", "scanner": "scanner-primary", "fingerprint": "c3fd6c87bf91be9d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-037f3479e4537839", "level": "note", "message": {"text": "Very large file: custom_components/ev_charging_manager/config_flow.py (1487 lines)"}, "properties": {"repobilityId": "b22fe41881c38dcb", "scanner": "scanner-primary", "fingerprint": "037f3479e4537839", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-8ed7996adb661bd9", "level": "note", "message": {"text": "Very large file: custom_components/ev_charging_manager/session_engine_v2.py (3226 lines)"}, "properties": {"repobilityId": "3759c5d0228c34bf", "scanner": "scanner-primary", "fingerprint": "8ed7996adb661bd9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-fe713977fbb30dcf", "level": "note", "message": {"text": "Very large file: custom_components/ev_charging_manager/session_engine.py (1439 lines)"}, "properties": {"repobilityId": "34cd467580b09e6b", "scanner": "scanner-primary", "fingerprint": "fe713977fbb30dcf", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-2d0c7b7ab8f8aacf", "level": "warning", "message": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "properties": {"repobilityId": "3d9ccdbb5ca5e0e2", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-20dd7d39d8eec9a4", "level": "note", "message": {"text": "Legacy-named symbol `session_engine_v2` in tests/test_session_engine_race_regression.py:24"}, "properties": {"repobilityId": "bcdcd4d9f42d7bcb", "scanner": "scanner-primary", "fingerprint": "20dd7d39d8eec9a4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-8e250fb5395b0ee3", "level": "note", "message": {"text": "Legacy-named symbol `session_engine_v2` in tests/test_binary_sensor.py:32"}, "properties": {"repobilityId": "cdfe57ec8c30e949", "scanner": "scanner-primary", "fingerprint": "8e250fb5395b0ee3", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-d7add34f574d62ab", "level": "note", "message": {"text": "Legacy-named symbol `snap_old` in tests/test_session_store.py:135"}, "properties": {"repobilityId": "503b1996b5167d22", "scanner": "scanner-primary", "fingerprint": "d7add34f574d62ab", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-7911d66fcd81c7ec", "level": "note", "message": {"text": "Legacy-named symbol `session_engine_v2` in tests/test_session_engine_plug_anchored.py:8"}, "properties": {"repobilityId": "aeba57079ad9061c", "scanner": "scanner-primary", "fingerprint": "7911d66fcd81c7ec", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-ad7870eb70f57cf2", "level": "note", "message": {"text": "Legacy-named symbol `session_engine_v2` in tests/test_session_engine_v2_cable_lock_race.py:37"}, "properties": {"repobilityId": "37927220de1fc48a", "scanner": "scanner-primary", "fingerprint": "ad7870eb70f57cf2", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-9d98e9acd11b041c", "level": "note", "message": {"text": "Legacy-named symbol `session_engine_v2` in tests/test_status_sensor_lifecycle.py:30"}, "properties": {"repobilityId": "3d375de94fa5faa7", "scanner": "scanner-primary", "fingerprint": "9d98e9acd11b041c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-94ee788f808a863b", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/conftest.py:15"}, "properties": {"repobilityId": "03e5c35f2f51bbd2", "scanner": "scanner-primary", "fingerprint": "94ee788f808a863b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ac4e838892dcc4b5", "level": "note", "message": {"text": "Legacy-named symbol `session_engine_v2` in tests/test_session_engine_disconnect.py:33"}, "properties": {"repobilityId": "503c7c67433de4c4", "scanner": "scanner-primary", "fingerprint": "ac4e838892dcc4b5", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-526af8bd894a59e3", "level": "note", "message": {"text": "Legacy-named symbol `session_engine_v2` in tests/test_status_sensor_sub_states.py:48"}, "properties": {"repobilityId": "f8ccc4f5639bef78", "scanner": "scanner-primary", "fingerprint": "526af8bd894a59e3", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-8af51e6e96a72700", "level": "note", "message": {"text": "Legacy-named symbol `session_engine_v2` in tests/test_session_engine_rfid_wait.py:53"}, "properties": {"repobilityId": "9800ac6d24c07bc1", "scanner": "scanner-primary", "fingerprint": "8af51e6e96a72700", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-5aa676b071d7d565", "level": "note", "message": {"text": "Legacy-named symbol `session_engine_v2` in tests/test_unknown_rfid_notification.py:37"}, "properties": {"repobilityId": "b0536508bee2a2ae", "scanner": "scanner-primary", "fingerprint": "5aa676b071d7d565", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-5383e24e6e917688", "level": "note", "message": {"text": "Legacy-named symbol `session_engine_v2` in tests/test_session_engine_heartbeat.py:41"}, "properties": {"repobilityId": "d1a8def619d805c9", "scanner": "scanner-primary", "fingerprint": "5383e24e6e917688", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-a54b939eedfe08ac", "level": "note", "message": {"text": "Legacy-named symbol `session_engine_v2` in tests/test_session_engine_bugfixes.py:42"}, "properties": {"repobilityId": "80419c73ffe86c7a", "scanner": "scanner-primary", "fingerprint": "a54b939eedfe08ac", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-53d4d41bcff2acdc", "level": "note", "message": {"text": "Legacy-named symbol `data_copy` in tests/test_storage_migration_v1_to_v2.py:189"}, "properties": {"repobilityId": "68505789653976cf", "scanner": "scanner-primary", "fingerprint": "53d4d41bcff2acdc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-f8322494cc06b85d", "level": "note", "message": {"text": "Legacy-named symbol `session_engine_v2` in tests/test_charging_duration_sensor.py:41"}, "properties": {"repobilityId": "be2b257081bdf15f", "scanner": "scanner-primary", "fingerprint": "f8322494cc06b85d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-29a99afa0740dd10", "level": "note", "message": {"text": "Legacy-named symbol `session_engine_v2` in tests/test_session_engine_guest.py:26"}, "properties": {"repobilityId": "a89ad768432db781", "scanner": "scanner-primary", "fingerprint": "29a99afa0740dd10", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-df2d20726cb60792", "level": "note", "message": {"text": "Legacy-named symbol `session_engine_v2` in tests/test_session_engine_replay.py:28"}, "properties": {"repobilityId": "1345b4f4b588a33b", "scanner": "scanner-primary", "fingerprint": "df2d20726cb60792", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-d096ad777838ce8c", "level": "note", "message": {"text": "Legacy-named symbol `session_engine_v2` in tests/test_session_engine_micro_filter.py:25"}, "properties": {"repobilityId": "888bd2f9547b7317", "scanner": "scanner-primary", "fingerprint": "d096ad777838ce8c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-446ae64d9bad5e58", "level": "note", "message": {"text": "Legacy-named symbol `session_engine_v2` in tests/test_session_recovery.py:710"}, "properties": {"repobilityId": "7427b7c2642582b5", "scanner": "scanner-primary", "fingerprint": "446ae64d9bad5e58", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-73e4169c27144574", "level": "note", "message": {"text": "Legacy-named symbol `session_engine_v2` in tests/test_session_engine_restart.py:45"}, "properties": {"repobilityId": "9c7d938cfdd2efd6", "scanner": "scanner-primary", "fingerprint": "73e4169c27144574", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-b57f569322bce710", "level": "none", "message": {"text": "Commented-code block (8 lines) in tests/test_session_engine_restart.py:1046"}, "properties": {"repobilityId": "7b19aae39c9a8cb5", "scanner": "scanner-primary", "fingerprint": "b57f569322bce710", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c10e6384582383a9", "level": "note", "message": {"text": "Legacy-named symbol `session_engine_v2` in tests/test_session_engine_overnight.py:30"}, "properties": {"repobilityId": "cc0e951f47e4158e", "scanner": "scanner-primary", "fingerprint": "c10e6384582383a9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-c88753d6f66b2f59", "level": "note", "message": {"text": "Legacy-named symbol `session_engine_v2` in tests/test_session_engine_charger_outage.py:29"}, "properties": {"repobilityId": "3070bcd59a789963", "scanner": "scanner-primary", "fingerprint": "c88753d6f66b2f59", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-051c01225465f2eb", "level": "note", "message": {"text": "Legacy-named symbol `session_engine_v2` in tests/test_spot_hour_capture.py:40"}, "properties": {"repobilityId": "a063241f58f15555", "scanner": "scanner-primary", "fingerprint": "051c01225465f2eb", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-e2f7131aafc9e601", "level": "none", "message": {"text": "Commented-code block (5 lines) in custom_components/ev_charging_manager/config_flow.py:715"}, "properties": {"repobilityId": "e8312d4e95acab82", "scanner": "scanner-primary", "fingerprint": "e2f7131aafc9e601", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-757aedf0ccdee245", "level": "none", "message": {"text": "Commented-code block (15 lines) in custom_components/ev_charging_manager/session.py:98"}, "properties": {"repobilityId": "b84a27012605030b", "scanner": "scanner-primary", "fingerprint": "757aedf0ccdee245", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c20f850b9c29c5f1", "level": "note", "message": {"text": "Legacy-named symbol `session_engine_v2` in custom_components/ev_charging_manager/const.py:258"}, "properties": {"repobilityId": "c01916b71a8fbc06", "scanner": "scanner-primary", "fingerprint": "c20f850b9c29c5f1", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-28ebc02698968051", "level": "none", "message": {"text": "Commented-code block (6 lines) in custom_components/ev_charging_manager/const.py:114"}, "properties": {"repobilityId": "8da7d30e71435e5e", "scanner": "scanner-primary", "fingerprint": "28ebc02698968051", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0d5046ade75cb08a", "level": "note", "message": {"text": "Legacy-named symbol `session_engine_v2` in custom_components/ev_charging_manager/__init__.py:29"}, "properties": {"repobilityId": "8851b9a295ad2c9b", "scanner": "scanner-primary", "fingerprint": "0d5046ade75cb08a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-c35353c573be3294", "level": "none", "message": {"text": "Commented-code block (6 lines) in custom_components/ev_charging_manager/__init__.py:132"}, "properties": {"repobilityId": "a7db798a1d0bce69", "scanner": "scanner-primary", "fingerprint": "c35353c573be3294", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fa3435440e92a52d", "level": "none", "message": {"text": "Commented-code block (6 lines) in custom_components/ev_charging_manager/session_engine_v2.py:3"}, "properties": {"repobilityId": "ed70f48ce431f765", "scanner": "scanner-primary", "fingerprint": "fa3435440e92a52d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5c168bc9b628cd7f", "level": "none", "message": {"text": "Commented-code block (8 lines) in custom_components/ev_charging_manager/session_store.py:170"}, "properties": {"repobilityId": "ee62f3f1e7428a2c", "scanner": "scanner-primary", "fingerprint": "5c168bc9b628cd7f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d9b7bed65dcfb04d", "level": "none", "message": {"text": "Commented-code block (19 lines) in custom_components/ev_charging_manager/charger_profiles.py:7"}, "properties": {"repobilityId": "367d1d9f07f4275f", "scanner": "scanner-primary", "fingerprint": "d9b7bed65dcfb04d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ef39e93fafea13d3", "level": "none", "message": {"text": "Commented-code block (5 lines) in custom_components/ev_charging_manager/config_store.py:98"}, "properties": {"repobilityId": "9d5a6de65f33f9ee", "scanner": "scanner-primary", "fingerprint": "ef39e93fafea13d3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-560aa41b1f129adc", "level": "none", "message": {"text": "Commented-code block (6 lines) in custom_components/ev_charging_manager/session_engine.py:135"}, "properties": {"repobilityId": "f7cdfa6c6f3c57e0", "scanner": "scanner-primary", "fingerprint": "560aa41b1f129adc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-49c98f7cedd9c977", "level": "note", "message": {"text": "Near-duplicate function bodies in 4 places"}, "properties": {"repobilityId": "1956561988b8d9e3", "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": "e19fb97f80c18cd8", "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": "1f514735c8c4f3be", "scanner": "scanner-primary", "fingerprint": "be46ea126aa5d8dc", "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": "a8a7f6ed52d419c2", "scanner": "scanner-primary", "fingerprint": "33a6b62e30ce7ab4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-fe1d9311d6aee734", "level": "note", "message": {"text": "Near-duplicate function bodies in 12 places"}, "properties": {"repobilityId": "d30ca9b102794b78", "scanner": "scanner-primary", "fingerprint": "fe1d9311d6aee734", "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": "3da64181c0f59a0a", "scanner": "scanner-primary", "fingerprint": "02525d39071dd2c7", "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": "f4217aa6c117ecfe", "scanner": "scanner-primary", "fingerprint": "be46ea126aa5d8dc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-be46ea126aa5d8dc", "level": "note", "message": {"text": "Near-duplicate function bodies in 3 places"}, "properties": {"repobilityId": "51a2be9cc80e108b", "scanner": "scanner-primary", "fingerprint": "be46ea126aa5d8dc", "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": "65eabbbc23517342", "scanner": "scanner-primary", "fingerprint": "76a2f6818267a9a8", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-46969939caf8120b", "level": "note", "message": {"text": "Near-duplicate function bodies in 9 places"}, "properties": {"repobilityId": "3d748b85200bcb91", "scanner": "scanner-primary", "fingerprint": "46969939caf8120b", "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": "da055198188a89e3", "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": "c1ad023c07e3787e", "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": "2faeaf819d59b507", "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": "ed96f328d612cbf6", "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": "b624cdf2b243a460", "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": "d758d3d32406bd2d", "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": "036247c8adf8dd82", "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": "c5c82aa34092bde7", "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": "9b8c48bf7a7314cd", "scanner": "scanner-primary", "fingerprint": "be46ea126aa5d8dc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}]}]}