)]}'
{"HACKING.rst":[{"robot_id":"zuul","robot_run_id":"3ee3c85c06e74089a1385f0f86a9037a","url":"https://zuul.teim.app/t/main/buildset/3ee3c85c06e74089a1385f0f86a9037a","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":"f3d3ef0c019520e40af349e747ce942e37bfa78a","patch_set":1,"id":"e98f34af_42ba82ac","line":160,"updated":"2026-04-04 03:13:38.000000000","message":"The HACKING.rst WD009 section heading says \u0027Prefer module imports over direct symbol imports\u0027 but the expanded guidance now covers both bare imports and aliased imports, making the heading slightly incomplete.\n\n**Severity**: WARNING | **Confidence**: 0.8\n\n**Impact**: Minor documentation inconsistency that could confuse new contributors about when aliases are acceptable.\n\n**Suggestion**:\nUpdate the WD009 heading to something like \u0027Prefer module imports; use aliases only when needed\u0027 to better reflect the expanded guidance.","commit_id":"862bffff8ee44b015a42f86a2eacf8f23c5ba36a"},{"robot_id":"zuul","robot_run_id":"3ee3c85c06e74089a1385f0f86a9037a","url":"https://zuul.teim.app/t/main/buildset/3ee3c85c06e74089a1385f0f86a9037a","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":"f3d3ef0c019520e40af349e747ce942e37bfa78a","patch_set":1,"id":"d78c781e_b7500bb2","line":225,"updated":"2026-04-04 03:13:38.000000000","message":"Commit subject is 66 characters, exceeding the recommended ~50 character guideline for OpenStack commit subjects.\n\n**Severity**: WARNING | **Confidence**: 0.8\n\n**Impact**: Longer than recommended but within the hard limit of 72. The subject conveys three distinct changes which makes it hard to be concise.\n\n**Suggestion**:\nConsider splitting this into separate commits or shortening to ~50 chars, e.g., \u0027refactor: WD009 import aliases and audit MV gating\u0027. The current subject is clear enough that this is minor.","commit_id":"862bffff8ee44b015a42f86a2eacf8f23c5ba36a"}],"tools/reword-commit-subject.sh":[{"robot_id":"zuul","robot_run_id":"3ee3c85c06e74089a1385f0f86a9037a","url":"https://zuul.teim.app/t/main/buildset/3ee3c85c06e74089a1385f0f86a9037a","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":"f3d3ef0c019520e40af349e747ce942e37bfa78a","patch_set":1,"id":"8d2d8f33_2e9c5349","line":17,"updated":"2026-04-04 03:13:38.000000000","message":"The reword-commit-subject.sh script uses a case/esac block with hard-coded old subjects. Any new commit that does not match a case will silently pass without rewording.\n\n**Severity**: SUGGESTION | **Confidence**: 0.8\n\n**Benefit**: Making the script more robust would prevent future commits from slipping through without the conventional-prefix style.\n\n**Recommendation**:\nConsider adding a default case that checks for the conventional commit prefix pattern and warns if a subject does not match any case and also lacks the prefix. This is a follow-up improvement.","commit_id":"862bffff8ee44b015a42f86a2eacf8f23c5ba36a"},{"robot_id":"zuul","robot_run_id":"3ee3c85c06e74089a1385f0f86a9037a","url":"https://zuul.teim.app/t/main/buildset/3ee3c85c06e74089a1385f0f86a9037a","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":"f3d3ef0c019520e40af349e747ce942e37bfa78a","patch_set":1,"id":"c52199d3_9b82a7e3","line":20,"updated":"2026-04-04 03:13:38.000000000","message":"tools/reword-commit-subject.sh has 6 lines exceeding 79 characters (up to 95 chars), violating the project\u0027s line-length policy. HACKING.rst also has a new line at 88 chars.\n\n**Severity**: WARNING | **Confidence**: 0.9\n\n**Impact**: Inconsistent with the 79-char policy explicitly documented in HACKING.rst. While shell scripts may not be checked by ruff, they should follow the project convention.\n\n**Suggestion**:\nBreak long amend_subject_only lines using backslash continuation or assign the new subject to a variable first. In HACKING.rst, break the \u0027Made-with:\u0027 example line to fit within 79 chars.","commit_id":"862bffff8ee44b015a42f86a2eacf8f23c5ba36a"}],"tools/strip-made-with-trailer.sh":[{"robot_id":"zuul","robot_run_id":"3ee3c85c06e74089a1385f0f86a9037a","url":"https://zuul.teim.app/t/main/buildset/3ee3c85c06e74089a1385f0f86a9037a","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":"f3d3ef0c019520e40af349e747ce942e37bfa78a","patch_set":1,"id":"955816c4_90e57559","line":14,"updated":"2026-04-04 03:13:38.000000000","message":"The strip-made-with-trailer.sh script redirects core.hooksPath to /dev/null which prevents all hooks from running during the amend.\n\n**Severity**: SUGGESTION | **Confidence**: 0.8\n\n**Benefit**: A more targeted approach would avoid accidentally disabling other hook functionality.\n\n**Recommendation**:\nConsider using a temporary hooks directory that only contains an empty or permissive commit-msg hook, rather than /dev/null. Document the trade-off clearly. This is a minor follow-up.","commit_id":"862bffff8ee44b015a42f86a2eacf8f23c5ba36a"}],"watcher_dashboard/api/watcher.py":[{"robot_id":"zuul","robot_run_id":"3ee3c85c06e74089a1385f0f86a9037a","url":"https://zuul.teim.app/t/main/buildset/3ee3c85c06e74089a1385f0f86a9037a","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":"f3d3ef0c019520e40af349e747ce942e37bfa78a","patch_set":1,"id":"90ddbb5e_797f2785","line":177,"updated":"2026-04-04 03:13:38.000000000","message":"audit_get() api_version parameter is not propagated through Audit.get() classmethod to the watcherclient call. The api_version keyword is accepted by Audit.get() but watcherclient() is called without it at line 199, so the microversion will always default to 1.0 regardless of what the DetailView passes.\n\n**Severity**: HIGH | **Confidence**: 0.9\n\n**Risk**: Audit detail page will not display start_time and end_time fields even when the server supports microversion 1.1+, because the api_version parameter is dropped at the classmethod level.\n\n**Priority**: Before merge\n**Why This Matters**: This is the primary functional change advertised in the commit message. Without the propagation, the MV gating feature does not work as intended.\n\n**Recommendation**:\nIn Audit.get() classmethod, pass api_version to the watcherclient() call: change `watcherclient(request).audit.get(audit\u003daudit_id)` to `watcherclient(request, api_version\u003dapi_version).audit.get(audit\u003daudit_id)` at line 199.","commit_id":"862bffff8ee44b015a42f86a2eacf8f23c5ba36a"},{"robot_id":"zuul","robot_run_id":"3ee3c85c06e74089a1385f0f86a9037a","url":"https://zuul.teim.app/t/main/buildset/3ee3c85c06e74089a1385f0f86a9037a","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":"f3d3ef0c019520e40af349e747ce942e37bfa78a","patch_set":1,"id":"9948840d_d82c7016","line":926,"updated":"2026-04-04 03:13:38.000000000","message":"Audit.get() has an @errors.handle_errors decorator and audit_get() duplicates the cast() call. Both are needed but the pattern is worth documenting.\n\n**Severity**: SUGGESTION | **Confidence**: 0.7\n\n**Benefit**: Clearer separation of concerns between error handling and type casting.\n\n**Recommendation**:\nThis is fine as-is since the decorator handles exceptions from the watcherclient call and the cast provides type narrowing for callers. No action needed, just noting for awareness.","commit_id":"862bffff8ee44b015a42f86a2eacf8f23c5ba36a"}],"watcher_dashboard/content/audits/views.py":[{"robot_id":"zuul","robot_run_id":"3ee3c85c06e74089a1385f0f86a9037a","url":"https://zuul.teim.app/t/main/buildset/3ee3c85c06e74089a1385f0f86a9037a","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":"f3d3ef0c019520e40af349e747ce942e37bfa78a","patch_set":1,"id":"d863f3e6_a207726f","line":69,"updated":"2026-04-04 03:13:38.000000000","message":"The microversion discovery pattern (get_max_version + is_microversion_supported + conditional version) is repeated in at least 5 views. This could be extracted into a shared helper.\n\n**Severity**: SUGGESTION | **Confidence**: 0.8\n\n**Benefit**: Reduce code duplication and make it easier to add new microversion-gated features consistently.\n\n**Recommendation**:\nConsider adding a helper method or mixin like `def _maybe_version(self, required_mv)` to a shared base class or utility that returns the version string or None based on max_version support. This is a follow-up improvement, not a blocker.","commit_id":"862bffff8ee44b015a42f86a2eacf8f23c5ba36a"}]}
