)]}'
{"setup.cfg":[{"robot_id":"zuul","robot_run_id":"eede57d1e739417980beaee8313118d7","url":"https://zuul.teim.app/t/main/buildset/eede57d1e739417980beaee8313118d7","author":{"_account_id":28006,"name":"teim-ci","display_name":"teim-ci","email":"ci@seanmooney.info","username":"ci-sean-mooney","status":"this is a third-party ci account run by sean-k-mooney on irc\nhosted at zuul.teim.app"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"dd662132cc3e0d6a293a8bb62f3f0676d08402e5","patch_set":1,"id":"b8b03923_248e215e","line":48,"updated":"2026-01-20 20:48:51.000000000","message":"Missing service entry point files referenced in setup.cfg\n\n**Severity**: CRITICAL | **Confidence**: 1.0\n\n**Risk**: Service startup failure - watcher-decision-engine and watcher-applier services will not start\n\n**Priority**: Immediate\n**Why This Matters**: The setup.cfg references non-existent entry point files which will cause service startup failures when the package is installed\n\n**Recommendation**:\nCreate missing service entry point files watcher/cmd/decisionengine.py and watcher/cmd/applier.py, or update setup.cfg to point to existing files","commit_id":"6056a7b0af31f83f60a9c50d82fed33a1b2cd717"},{"robot_id":"zuul","robot_run_id":"7453118841e646bd91184b95e76bcda5","url":"https://zuul.teim.app/t/main/buildset/7453118841e646bd91184b95e76bcda5","author":{"_account_id":28006,"name":"teim-ci","display_name":"teim-ci","email":"ci@seanmooney.info","username":"ci-sean-mooney","status":"this is a third-party ci account run by sean-k-mooney on irc\nhosted at zuul.teim.app"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"478913308164a1a21c831a30af2d92f4bbb1295d","patch_set":2,"id":"3a9525c3_b2aae15b","line":47,"updated":"2026-01-21 01:31:03.000000000","message":"API service entry point completely removed from console_scripts\n\n**Severity**: WARNING | **Confidence**: 0.9\n\n**Impact**: watcher-api service cannot be started directly, breaking deployment scripts and service management that expect this entry point\n\n**Suggestion**:\nAdd watcher-api entry point using standard WSGI server without eventlet dependencies, or document the new deployment method via watcher-api-wsgi entry point","commit_id":"bb0925c5ff3420a99fd6a3058a6880de0b2eb508"},{"robot_id":"zuul","robot_run_id":"85ebcd601c3e4cc381c21b4a28080076","url":"https://zuul.teim.app/t/main/buildset/85ebcd601c3e4cc381c21b4a28080076","author":{"_account_id":28006,"name":"teim-ci","display_name":"teim-ci","email":"ci@seanmooney.info","username":"ci-sean-mooney","status":"this is a third-party ci account run by sean-k-mooney on irc\nhosted at zuul.teim.app"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"1a4f51d9cffebb47c35d0d560c201c4b46e7646f","patch_set":4,"id":"094c77c0_1bd5d13f","line":1,"updated":"2026-04-14 18:37:19.000000000","message":"The commit message body contains a grammatical error: \u0027validate that it working without\u0027 should be \u0027validate that it works without\u0027.\n\n**Severity**: SUGGESTION | **Confidence**: 1.0\n\n**Benefit**: Clear and correct commit messages improve project history readability.\n\n**Recommendation**:\nFix the commit message to read \u0027validate that it works without any eventlet code or any monkey patching\u0027.","commit_id":"0cf0ed696d8f8b1d7772aa9d159ef93461361503"},{"robot_id":"zuul","robot_run_id":"85ebcd601c3e4cc381c21b4a28080076","url":"https://zuul.teim.app/t/main/buildset/85ebcd601c3e4cc381c21b4a28080076","author":{"_account_id":28006,"name":"teim-ci","display_name":"teim-ci","email":"ci@seanmooney.info","username":"ci-sean-mooney","status":"this is a third-party ci account run by sean-k-mooney on irc\nhosted at zuul.teim.app"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"1a4f51d9cffebb47c35d0d560c201c4b46e7646f","patch_set":4,"id":"7119354a_867816e1","line":43,"updated":"2026-04-14 18:37:19.000000000","message":"The watcher-api console script entry point was removed from setup.cfg, but there is no release note or documentation update in this patch to inform operators of this breaking change.\n\n**Severity**: WARNING | **Confidence**: 0.9\n\n**Impact**: Operators relying on watcher-api console script for standalone deployment will find their service broken after upgrade with no migration guidance.\n\n**Suggestion**:\nAdd a release note (releasenotes/) documenting: (1) removal of the watcher-api console script, (2) migration path to watcher-api-wsgi for WSGI deployment, and (3) removal of MAAS baremetal integration.","commit_id":"0cf0ed696d8f8b1d7772aa9d159ef93461361503"}],"tox.ini":[{"robot_id":"zuul","robot_run_id":"85ebcd601c3e4cc381c21b4a28080076","url":"https://zuul.teim.app/t/main/buildset/85ebcd601c3e4cc381c21b4a28080076","author":{"_account_id":28006,"name":"teim-ci","display_name":"teim-ci","email":"ci@seanmooney.info","username":"ci-sean-mooney","status":"this is a third-party ci account run by sean-k-mooney on irc\nhosted at zuul.teim.app"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"1a4f51d9cffebb47c35d0d560c201c4b46e7646f","patch_set":4,"id":"6ae15a77_2d42e93d","line":39,"updated":"2026-04-14 18:37:19.000000000","message":"The py3-eventlet tox test environment remains in tox.ini with OS_WATCHER_DISABLE_EVENTLET_PATCHING\u003dfalse, but the eventlet module it depends on (watcher/eventlet.py) has been deleted.\n\n**Severity**: HIGH | **Confidence**: 1.0\n\n**Risk**: Running tox -e py3-eventlet will fail with ImportError since watcher.eventlet no longer exists. This creates a broken test environment and confuses CI configurations.\n\n**Priority**: Before merge\n**Why This Matters**: Leaving a broken tox environment gives the impression that eventlet testing is still supported and will cause failures if anyone tries to use it.\n\n**Recommendation**:\nRemove the [testenv:py3-eventlet] section from tox.ini entirely since eventlet support has been removed.","commit_id":"0cf0ed696d8f8b1d7772aa9d159ef93461361503"}],"watcher/applier/workflow_engine/base.py":[{"robot_id":"zuul","robot_run_id":"7453118841e646bd91184b95e76bcda5","url":"https://zuul.teim.app/t/main/buildset/7453118841e646bd91184b95e76bcda5","author":{"_account_id":28006,"name":"teim-ci","display_name":"teim-ci","email":"ci@seanmooney.info","username":"ci-sean-mooney","status":"this is a third-party ci account run by sean-k-mooney on irc\nhosted at zuul.teim.app"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"478913308164a1a21c831a30af2d92f4bbb1295d","patch_set":2,"id":"f0fc0693_b024f4df","line":248,"updated":"2026-01-21 01:31:03.000000000","message":"Thread abort functionality removed without replacement in BaseTaskFlowActionContainer\n\n**Severity**: HIGH | **Confidence**: 0.9\n\n**Risk**: Critical action cancellation capability has been removed - cancelled action plans can no longer abort executing actions, potentially leading to resource leaks or hung operations\n\n**Priority**: Before merge\n**Why This Matters**: Action cancellation is essential for operational control and resource management in production environments. Without it, cancelled action plans may continue running unnecessarily\n\n**Recommendation**:\nImplement alternative cancellation mechanism using native threading primitives (threading.Event) or taskflow\u0027s built-in cancellation support to replace the removed eventlet greenlet.kill functionality","commit_id":"bb0925c5ff3420a99fd6a3058a6880de0b2eb508"},{"robot_id":"zuul","robot_run_id":"668db138e3d74c268f2655e0d5633a22","url":"https://zuul.teim.app/t/main/buildset/668db138e3d74c268f2655e0d5633a22","author":{"_account_id":28006,"name":"teim-ci","display_name":"teim-ci","email":"ci@seanmooney.info","username":"ci-sean-mooney","status":"this is a third-party ci account run by sean-k-mooney on irc\nhosted at zuul.teim.app"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"c98c5780ff9b8b2fa016d446c698b9d423a2e06a","patch_set":3,"id":"09e6fef8_320483a9","line":246,"updated":"2026-01-22 11:57:40.000000000","message":"Removed green thread abort functionality without replacement implementation\n\n**Severity**: HIGH | **Confidence**: 0.9\n\n**Risk**: Action plans in CANCEL_STATES will no longer be properly aborted, potentially leading to resource leaks and hung operations\n\n**Priority**: Before merge\n**Why This Matters**: The removed green thread abort functionality provided critical cancellation capabilities for long-running actions. Without this, canceled actions may continue running and consuming resources.\n\n**Recommendation**:\nImplement proper thread-based cancellation mechanism using threading.Event or similar to replace the removed green thread abort functionality","commit_id":"d506ea82f1c94c09eaa829d7a900f5f6c8d611fc"}],"watcher/applier/workflow_engine/default.py":[{"robot_id":"zuul","robot_run_id":"7453118841e646bd91184b95e76bcda5","url":"https://zuul.teim.app/t/main/buildset/7453118841e646bd91184b95e76bcda5","author":{"_account_id":28006,"name":"teim-ci","display_name":"teim-ci","email":"ci@seanmooney.info","username":"ci-sean-mooney","status":"this is a third-party ci account run by sean-k-mooney on irc\nhosted at zuul.teim.app"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"478913308164a1a21c831a30af2d92f4bbb1295d","patch_set":2,"id":"aff39ec3_317b8017","line":108,"updated":"2026-01-21 01:31:03.000000000","message":"Taskflow engine forced to serial mode reducing performance potential\n\n**Severity**: WARNING | **Confidence**: 0.8\n\n**Impact**: Actions will execute sequentially instead of in parallel, potentially reducing overall system performance and throughput for action plan execution\n\n**Suggestion**:\nConsider implementing native ThreadPoolExecutor-based parallel execution to replace the removed eventlet greenthread parallelism, or document this as an intentional trade-off for simplicity","commit_id":"bb0925c5ff3420a99fd6a3058a6880de0b2eb508"},{"robot_id":"zuul","robot_run_id":"85ebcd601c3e4cc381c21b4a28080076","url":"https://zuul.teim.app/t/main/buildset/85ebcd601c3e4cc381c21b4a28080076","author":{"_account_id":28006,"name":"teim-ci","display_name":"teim-ci","email":"ci@seanmooney.info","username":"ci-sean-mooney","status":"this is a third-party ci account run by sean-k-mooney on irc\nhosted at zuul.teim.app"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"1a4f51d9cffebb47c35d0d560c201c4b46e7646f","patch_set":4,"id":"d51ddc35_2a26ed21","line":1,"updated":"2026-04-14 18:37:19.000000000","message":"Commit message starts with \u0027DNM\u0027 (Do Not Merge) which suggests this patch may not be intended for final merge. If this is meant to be merged, the subject should be changed.\n\n**Severity**: WARNING | **Confidence**: 0.9\n\n**Impact**: If merged as-is, the DNM prefix in the git history is confusing and non-standard. If this is truly a test/validation patch, it should not pass review for merge.\n\n**Suggestion**:\nIf this patch is intended for merge, update the commit subject to use imperative mood without the DNM prefix, e.g., \u0027Remove eventlet code and MAAS integration\u0027. If it is a test-only patch, ensure it is not voted +2.","commit_id":"0cf0ed696d8f8b1d7772aa9d159ef93461361503"},{"robot_id":"zuul","robot_run_id":"85ebcd601c3e4cc381c21b4a28080076","url":"https://zuul.teim.app/t/main/buildset/85ebcd601c3e4cc381c21b4a28080076","author":{"_account_id":28006,"name":"teim-ci","display_name":"teim-ci","email":"ci@seanmooney.info","username":"ci-sean-mooney","status":"this is a third-party ci account run by sean-k-mooney on irc\nhosted at zuul.teim.app"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"1a4f51d9cffebb47c35d0d560c201c4b46e7646f","patch_set":4,"id":"e2bb96dc_d1f5f8db","line":108,"updated":"2026-04-14 18:37:19.000000000","message":"The LOG.info message \u0027Using Taskflow parallel engine when running in native threading mode.\u0027 is now always logged on every execute() call, which may be noisy in production.\n\n**Severity**: SUGGESTION | **Confidence**: 0.8\n\n**Benefit**: Reducing log noise from INFO-level messages that repeat on every action plan execution improves log readability for operators.\n\n**Recommendation**:\nConsider downgrading to LOG.debug, or remove the message entirely since native threading is now the only mode. The message served a diagnostic purpose during the transition period.","commit_id":"0cf0ed696d8f8b1d7772aa9d159ef93461361503"}],"watcher/cmd/__init__.py":[{"robot_id":"zuul","robot_run_id":"85ebcd601c3e4cc381c21b4a28080076","url":"https://zuul.teim.app/t/main/buildset/85ebcd601c3e4cc381c21b4a28080076","author":{"_account_id":28006,"name":"teim-ci","display_name":"teim-ci","email":"ci@seanmooney.info","username":"ci-sean-mooney","status":"this is a third-party ci account run by sean-k-mooney on irc\nhosted at zuul.teim.app"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"1a4f51d9cffebb47c35d0d560c201c4b46e7646f","patch_set":4,"id":"a9336662_fe91e51a","line":19,"updated":"2026-04-14 18:37:19.000000000","message":"The oslo_service_helper.init_oslo_service_backend() is now called in two places: watcher/cmd/__init__.py and watcher/tests/unit/__init__.py. Both call it at module import time which is correct but the duplication could be fragile.\n\n**Severity**: SUGGESTION | **Confidence**: 0.8\n\n**Benefit**: Ensures consistency and reduces the risk of one call site being updated without the other. The pattern of calling init at module import time is already established.\n\n**Recommendation**:\nConsider adding a guard in init_oslo_service_backend() to prevent double initialization, e.g., checking a module-level flag. This is a low-priority improvement since both call sites serve different execution contexts.","commit_id":"0cf0ed696d8f8b1d7772aa9d159ef93461361503"}],"watcher/common/clients.py":[{"robot_id":"zuul","robot_run_id":"85ebcd601c3e4cc381c21b4a28080076","url":"https://zuul.teim.app/t/main/buildset/85ebcd601c3e4cc381c21b4a28080076","author":{"_account_id":28006,"name":"teim-ci","display_name":"teim-ci","email":"ci@seanmooney.info","username":"ci-sean-mooney","status":"this is a third-party ci account run by sean-k-mooney on irc\nhosted at zuul.teim.app"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"1a4f51d9cffebb47c35d0d560c201c4b46e7646f","patch_set":4,"id":"c31366f4_4d27abb5","line":124,"updated":"2026-04-14 18:37:19.000000000","message":"The clients.py OpenStackClients.reset_clients() method no longer initializes self._maas but the method structure could benefit from a comment explaining the remaining clients.\n\n**Severity**: SUGGESTION | **Confidence**: 0.7\n\n**Benefit**: Improved readability for future maintainers understanding which clients are lazily initialized.\n\n**Recommendation**:\nThis is a minor readability suggestion. The current code is already clean and follows the established pattern in the file.","commit_id":"0cf0ed696d8f8b1d7772aa9d159ef93461361503"}],"watcher/common/executor.py":[{"robot_id":"zuul","robot_run_id":"eede57d1e739417980beaee8313118d7","url":"https://zuul.teim.app/t/main/buildset/eede57d1e739417980beaee8313118d7","author":{"_account_id":28006,"name":"teim-ci","display_name":"teim-ci","email":"ci@seanmooney.info","username":"ci-sean-mooney","status":"this is a third-party ci account run by sean-k-mooney on irc\nhosted at zuul.teim.app"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"dd662132cc3e0d6a293a8bb62f3f0676d08402e5","patch_set":1,"id":"657aaec9_ec9bbedc","line":60,"updated":"2026-01-20 20:48:51.000000000","message":"Documentation inconsistency in APSchedulerThreadPoolExecutor docstring\n\n**Severity**: HIGH | **Confidence**: 0.8\n\n**Risk**: Confusing documentation that references removed eventlet functionality\n\n**Priority**: Before merge\n**Why This Matters**: Outdated documentation could mislead developers about supported functionality\n\n**Recommendation**:\nUpdate docstring to remove reference to eventlet/conditionals and accurately describe threading-only implementation","commit_id":"6056a7b0af31f83f60a9c50d82fed33a1b2cd717"},{"robot_id":"zuul","robot_run_id":"668db138e3d74c268f2655e0d5633a22","url":"https://zuul.teim.app/t/main/buildset/668db138e3d74c268f2655e0d5633a22","author":{"_account_id":28006,"name":"teim-ci","display_name":"teim-ci","email":"ci@seanmooney.info","username":"ci-sean-mooney","status":"this is a third-party ci account run by sean-k-mooney on irc\nhosted at zuul.teim.app"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"c98c5780ff9b8b2fa016d446c698b9d423a2e06a","patch_set":3,"id":"fd4e949e_66d63b04","line":25,"updated":"2026-01-22 11:57:40.000000000","message":"Potential performance regression from GreenThreadPoolExecutor to ThreadPoolExecutor\n\n**Severity**: WARNING | **Confidence**: 0.8\n\n**Impact**: Concurrent operations may have higher overhead due to heavyweight threads instead of lightweight green threads\n\n**Suggestion**:\nMonitor performance in production and consider async alternatives if thread overhead becomes problematic","commit_id":"d506ea82f1c94c09eaa829d7a900f5f6c8d611fc"},{"robot_id":"zuul","robot_run_id":"85ebcd601c3e4cc381c21b4a28080076","url":"https://zuul.teim.app/t/main/buildset/85ebcd601c3e4cc381c21b4a28080076","author":{"_account_id":28006,"name":"teim-ci","display_name":"teim-ci","email":"ci@seanmooney.info","username":"ci-sean-mooney","status":"this is a third-party ci account run by sean-k-mooney on irc\nhosted at zuul.teim.app"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"1a4f51d9cffebb47c35d0d560c201c4b46e7646f","patch_set":4,"id":"a7e35e6e_aca95193","line":63,"updated":"2026-04-14 18:37:19.000000000","message":"The APSchedulerThreadPoolExecutor class docstring has a broken sentence: \u0027This will return an executor for APScheduler based class which will be constructed using the futurist.ThreadPoolExecutor or\u0027 -- the sentence trails off without completion after the removal of the eventlet clause.\n\n**Severity**: WARNING | **Confidence**: 1.0\n\n**Impact**: Confusing and misleading documentation for developers reading the class. The docstring appears to have been partially edited without completing the rewrite.\n\n**Suggestion**:\nRewrite the docstring to reflect the simplified implementation: \u0027Thread pool executor for APScheduler based classes. Uses futurist.ThreadPoolExecutor as the underlying pool implementation.\u0027","commit_id":"0cf0ed696d8f8b1d7772aa9d159ef93461361503"}],"watcher/common/metal_helper/factory.py":[{"robot_id":"zuul","robot_run_id":"85ebcd601c3e4cc381c21b4a28080076","url":"https://zuul.teim.app/t/main/buildset/85ebcd601c3e4cc381c21b4a28080076","author":{"_account_id":28006,"name":"teim-ci","display_name":"teim-ci","email":"ci@seanmooney.info","username":"ci-sean-mooney","status":"this is a third-party ci account run by sean-k-mooney on irc\nhosted at zuul.teim.app"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"1a4f51d9cffebb47c35d0d560c201c4b46e7646f","patch_set":4,"id":"d203be24_12e92463","line":22,"updated":"2026-04-14 18:37:19.000000000","message":"factory.get_helper() returns None when osc argument is provided. The return statement is incorrectly indented inside the \u0027if not osc:\u0027 block at line 25, so passing an existing OpenStackClients object causes the function to fall through and return None implicitly.\n\n**Severity**: CRITICAL | **Confidence**: 1.0\n\n**Risk**: Any caller passing an existing osc object receives None, causing AttributeError or TypeError in downstream code that expects a BaseMetalHelper instance.\n\n**Priority**: Immediate\n**Why This Matters**: This is a regression introduced by this patch. The original code had the return at the correct indentation level outside the if block. The diff shows the else clause and the maas branch were removed, but the return for the ironic path was incorrectly nested inside the if block.\n\n**Recommendation**:\nDedent the return statement so it is at the same level as the if block. The corrected function should read: if not osc: osc \u003d clients.OpenStackClients() then return ironic.IronicHelper(osc) at the function level.","commit_id":"0cf0ed696d8f8b1d7772aa9d159ef93461361503"}],"watcher/common/oslo_service_helper.py":[{"robot_id":"zuul","robot_run_id":"eede57d1e739417980beaee8313118d7","url":"https://zuul.teim.app/t/main/buildset/eede57d1e739417980beaee8313118d7","author":{"_account_id":28006,"name":"teim-ci","display_name":"teim-ci","email":"ci@seanmooney.info","username":"ci-sean-mooney","status":"this is a third-party ci account run by sean-k-mooney on irc\nhosted at zuul.teim.app"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"dd662132cc3e0d6a293a8bb62f3f0676d08402e5","patch_set":1,"id":"417797b7_7daff1ea","line":27,"updated":"2026-01-20 20:48:51.000000000","message":"Service startup log messages indicate experimental threading feature\n\n**Severity**: WARNING | **Confidence**: 0.7\n\n**Impact**: User confidence and deployment readiness\n\n**Suggestion**:\nUpdate warning messages to reflect that threading is now the primary backend, not experimental","commit_id":"6056a7b0af31f83f60a9c50d82fed33a1b2cd717"},{"robot_id":"zuul","robot_run_id":"7453118841e646bd91184b95e76bcda5","url":"https://zuul.teim.app/t/main/buildset/7453118841e646bd91184b95e76bcda5","author":{"_account_id":28006,"name":"teim-ci","display_name":"teim-ci","email":"ci@seanmooney.info","username":"ci-sean-mooney","status":"this is a third-party ci account run by sean-k-mooney on irc\nhosted at zuul.teim.app"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"478913308164a1a21c831a30af2d92f4bbb1295d","patch_set":2,"id":"dfc930d8_f3623a17","line":22,"updated":"2026-01-21 01:31:03.000000000","message":"Threading backend marked as experimental in production warning\n\n**Severity**: HIGH | **Confidence**: 0.8\n\n**Risk**: Production deployment risk due to experimental threading backend warning, despite this being the intended production configuration after eventlet removal\n\n**Priority**: Before merge\n**Why This Matters**: Production systems should not use experimental features, and this warning creates uncertainty about operational readiness for non-eventlet mode\n\n**Recommendation**:\nUpdate warning message to reflect that threading backend is now the standard production-ready mode, or add configuration flag to distinguish experimental vs production threading usage","commit_id":"bb0925c5ff3420a99fd6a3058a6880de0b2eb508"},{"robot_id":"zuul","robot_run_id":"85ebcd601c3e4cc381c21b4a28080076","url":"https://zuul.teim.app/t/main/buildset/85ebcd601c3e4cc381c21b4a28080076","author":{"_account_id":28006,"name":"teim-ci","display_name":"teim-ci","email":"ci@seanmooney.info","username":"ci-sean-mooney","status":"this is a third-party ci account run by sean-k-mooney on irc\nhosted at zuul.teim.app"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"1a4f51d9cffebb47c35d0d560c201c4b46e7646f","patch_set":4,"id":"d57a8064_f8a4288e","line":25,"updated":"2026-04-14 18:37:19.000000000","message":"The warning message in oslo_service_helper.py states \u0027This is an experimental feature, do not use it in production\u0027 which may be misleading now that eventlet has been fully removed and threading is the only option.\n\n**Severity**: WARNING | **Confidence**: 0.8\n\n**Impact**: Operators may be discouraged from deploying watcher in production if the only available service backend is labeled experimental. This warning was appropriate during the transition period but should be reconsidered now that eventlet is removed.\n\n**Suggestion**:\nConsider updating or removing the \u0027experimental\u0027 warning. If native threading is now the production path, the warning should reflect that. If it genuinely is not production-ready, a release note is needed explaining the migration path.","commit_id":"0cf0ed696d8f8b1d7772aa9d159ef93461361503"}],"watcher/common/utils.py":[{"robot_id":"zuul","robot_run_id":"eede57d1e739417980beaee8313118d7","url":"https://zuul.teim.app/t/main/buildset/eede57d1e739417980beaee8313118d7","author":{"_account_id":28006,"name":"teim-ci","display_name":"teim-ci","email":"ci@seanmooney.info","username":"ci-sean-mooney","status":"this is a third-party ci account run by sean-k-mooney on irc\nhosted at zuul.teim.app"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"dd662132cc3e0d6a293a8bb62f3f0676d08402e5","patch_set":1,"id":"bc54b1c8_7366fc31","line":162,"updated":"2026-01-20 20:48:51.000000000","message":"MAAS compatibility code still references eventlet in comments\n\n**Severity**: HIGH | **Confidence**: 0.8\n\n**Risk**: Misleading comments about MAAS eventlet compatibility after removal\n\n**Priority**: Before merge\n**Why This Matters**: Comments suggesting eventlet workarounds that no longer exist could confuse future maintenance\n\n**Recommendation**:\nUpdate async_compat_call comments to reflect pure threading implementation and remove MAAS eventlet references","commit_id":"6056a7b0af31f83f60a9c50d82fed33a1b2cd717"},{"robot_id":"zuul","robot_run_id":"eede57d1e739417980beaee8313118d7","url":"https://zuul.teim.app/t/main/buildset/eede57d1e739417980beaee8313118d7","author":{"_account_id":28006,"name":"teim-ci","display_name":"teim-ci","email":"ci@seanmooney.info","username":"ci-sean-mooney","status":"this is a third-party ci account run by sean-k-mooney on irc\nhosted at zuul.teim.app"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"dd662132cc3e0d6a293a8bb62f3f0676d08402e5","patch_set":1,"id":"abc5dd14_0df91be8","line":196,"updated":"2026-01-20 20:48:51.000000000","message":"InlineThread class documentation outdated after eventlet removal\n\n**Severity**: WARNING | **Confidence**: 0.7\n\n**Impact**: Documentation accuracy and developer understanding\n\n**Suggestion**:\nUpdate InlineThread docstring to remove references to \u0027non-eventlet mode\u0027 and clarify its purpose in threading context","commit_id":"6056a7b0af31f83f60a9c50d82fed33a1b2cd717"},{"robot_id":"zuul","robot_run_id":"eede57d1e739417980beaee8313118d7","url":"https://zuul.teim.app/t/main/buildset/eede57d1e739417980beaee8313118d7","author":{"_account_id":28006,"name":"teim-ci","display_name":"teim-ci","email":"ci@seanmooney.info","username":"ci-sean-mooney","status":"this is a third-party ci account run by sean-k-mooney on irc\nhosted at zuul.teim.app"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"dd662132cc3e0d6a293a8bb62f3f0676d08402e5","patch_set":1,"id":"40801b1a_641dfa0f","line":276,"updated":"2026-01-20 20:48:51.000000000","message":"thread_kill function removed but potentially still referenced\n\n**Severity**: WARNING | **Confidence**: 0.6\n\n**Impact**: Potential AttributeError if thread_kill is called elsewhere\n\n**Suggestion**:\nSearch codebase for any remaining calls to thread_kill function and ensure they are removed or updated","commit_id":"6056a7b0af31f83f60a9c50d82fed33a1b2cd717"},{"robot_id":"zuul","robot_run_id":"7453118841e646bd91184b95e76bcda5","url":"https://zuul.teim.app/t/main/buildset/7453118841e646bd91184b95e76bcda5","author":{"_account_id":28006,"name":"teim-ci","display_name":"teim-ci","email":"ci@seanmooney.info","username":"ci-sean-mooney","status":"this is a third-party ci account run by sean-k-mooney on irc\nhosted at zuul.teim.app"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"478913308164a1a21c831a30af2d92f4bbb1295d","patch_set":2,"id":"cdab109f_1dfcaabb","line":196,"updated":"2026-01-21 01:31:03.000000000","message":"Update inline thread documentation for clarity\n\n**Severity**: SUGGESTION | **Confidence**: 0.6\n\n**Benefit**: Improves code maintainability and helps developers understand the migration from eventlet to native threading\n\n**Recommendation**:\nUpdate InlineThread docstring to explain it\u0027s part of the eventlet removal migration and provides synchronous execution for compatibility","commit_id":"bb0925c5ff3420a99fd6a3058a6880de0b2eb508"}],"watcher/conf/__init__.py":[{"robot_id":"zuul","robot_run_id":"85ebcd601c3e4cc381c21b4a28080076","url":"https://zuul.teim.app/t/main/buildset/85ebcd601c3e4cc381c21b4a28080076","author":{"_account_id":28006,"name":"teim-ci","display_name":"teim-ci","email":"ci@seanmooney.info","username":"ci-sean-mooney","status":"this is a third-party ci account run by sean-k-mooney on irc\nhosted at zuul.teim.app"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"1a4f51d9cffebb47c35d0d560c201c4b46e7646f","patch_set":4,"id":"2b1954cf_5806d8bf","line":35,"updated":"2026-04-14 18:37:19.000000000","message":"The conf/__init__.py now has a blank line gap where maas_client import was removed. The import block could be re-sorted for alphabetical consistency.\n\n**Severity**: SUGGESTION | **Confidence**: 0.7\n\n**Benefit**: Maintains consistent alphabetical ordering of imports which is enforced by ruff isort in this project.\n\n**Recommendation**:\nThe import list already appears sorted after the removal, so this is cosmetic. Verify ruff isort is happy with the current state by running tox -e pep8.","commit_id":"0cf0ed696d8f8b1d7772aa9d159ef93461361503"}],"watcher/decision_engine/scheduling.py":[{"robot_id":"zuul","robot_run_id":"eede57d1e739417980beaee8313118d7","url":"https://zuul.teim.app/t/main/buildset/eede57d1e739417980beaee8313118d7","author":{"_account_id":28006,"name":"teim-ci","display_name":"teim-ci","email":"ci@seanmooney.info","username":"ci-sean-mooney","status":"this is a third-party ci account run by sean-k-mooney on irc\nhosted at zuul.teim.app"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"dd662132cc3e0d6a293a8bb62f3f0676d08402e5","patch_set":1,"id":"a6362984_118dace1","line":53,"updated":"2026-01-20 20:48:51.000000000","message":"Timeout functionality removed from decision engine without replacement\n\n**Severity**: CRITICAL | **Confidence**: 0.9\n\n**Risk**: Potential infinite hangs in collector synchronization without timeout protection\n\n**Priority**: Before merge\n**Why This Matters**: The eventlet timeout was removed without replacement, leaving synchronization calls vulnerable to indefinite blocking\n\n**Recommendation**:\nImplement timeout mechanism using signal.alarm or threading.Timer to replace removed eventlet timeout","commit_id":"6056a7b0af31f83f60a9c50d82fed33a1b2cd717"}]}
