)]}'
{"id":"openstack%2Fwatcher-specs~963438","triplet_id":"openstack%2Fwatcher-specs~master~I6e66420e7fde1491bc39577e74a507dda18bf4a8","project":"openstack/watcher-specs","branch":"master","topic":"watcher-dashboard-testing","attention_set":{},"removed_from_attention_set":{"30002":{"account":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"last_update":"2025-11-17 19:31:41.000000000","reason":"\u003cGERRIT_ACCOUNT_30002\u003e replied on the change","reason_account":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"}},"11604":{"account":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"last_update":"2025-11-18 11:50:58.000000000","reason":"Change was submitted"}},"hashtags":[],"change_id":"I6e66420e7fde1491bc39577e74a507dda18bf4a8","subject":"Improve Watcher Dashboard code quality and test infrastructure","status":"MERGED","created":"2025-10-08 18:57:55.000000000","updated":"2025-11-18 11:51:52.000000000","submitted":"2025-11-18 11:50:58.000000000","submitter":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"total_comment_count":4,"unresolved_comment_count":0,"has_review_started":true,"submission_id":"963438-watcher-dashboard-testing","meta_rev_id":"b77b8b4005556dbf26b983715df82dd10af4f160","_number":963438,"virtual_id_number":963438,"owner":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"actions":{},"labels":{"Verified":{"approved":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"all":[{"value":0,"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},{"value":0,"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},{"tag":"autogenerated:zuul:gate","value":2,"date":"2025-11-18 11:50:58.000000000","permitted_voting_range":{"min":2,"max":2},"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"values":{"-2":"Fails","-1":"Doesn\u0027t seem to work"," 0":"No score","+1":"Works for me","+2":"Verified"},"description":"","default_value":0,"optional":true},"Code-Review":{"approved":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"all":[{"value":2,"date":"2025-11-18 11:44:48.000000000","permitted_voting_range":{"min":2,"max":2},"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},{"value":2,"date":"2025-10-27 11:29:19.000000000","permitted_voting_range":{"min":2,"max":2},"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},{"value":0,"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"values":{"-2":"Do not merge","-1":"This patch needs further work before it can be merged"," 0":"No score","+1":"Looks good to me, but someone else must approve","+2":"Looks good to me (core reviewer)"},"description":"","default_value":0,"optional":true},"Workflow":{"approved":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"all":[{"value":1,"date":"2025-11-18 11:44:48.000000000","permitted_voting_range":{"min":1,"max":1},"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},{"value":0,"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},{"value":0,"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"values":{"-1":"Work in progress"," 0":"Ready for reviews","+1":"Approved"},"description":"","default_value":0,"optional":true},"Review-Priority":{"all":[{"value":0,"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},{"value":0,"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},{"value":0,"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"values":{" 0":"Standard Change","+1":"Important Change","+2":"High Priority Change"},"description":"","default_value":0,"optional":true}},"removable_reviewers":[],"reviewers":{"REVIEWER":[{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"}],"CC":[{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},{"_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"}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2025-10-08 19:03:27.000000000","updated_by":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"reviewer":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"state":"REVIEWER"},{"updated":"2025-10-27 11:29:19.000000000","updated_by":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"reviewer":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"state":"REVIEWER"},{"updated":"2025-11-13 19:15:19.000000000","updated_by":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"reviewer":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"state":"CC"},{"updated":"2025-11-13 19:15:19.000000000","updated_by":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"reviewer":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"state":"REVIEWER"},{"updated":"2025-11-17 19:31:50.000000000","updated_by":{"_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"},"reviewer":{"_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"},"state":"CC"}],"messages":[{"id":"b11de80f6ed69df3e382f83ed38730fbc69d8825","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"date":"2025-10-08 18:57:55.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"9f0d87e45b9e2fa0f883fb736f5778104d2d54d5","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2025-10-08 19:03:27.000000000","message":"Patch Set 1: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/b6a5569185c441f98ce5e1f5e3c1dd95\n\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/da3126a5827c4154bf176f1dbd9fa4d8 : SUCCESS in 3m 32s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/acfc352a8c92437dad49de47911f5878 : SUCCESS in 4m 13s","accounts_in_message":[],"_revision_number":1},{"id":"67f099594196dde847daa9cd49047dd520a42738","author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"date":"2025-10-27 11:29:19.000000000","message":"Patch Set 1: Code-Review+2\n\n(1 comment)","accounts_in_message":[],"_revision_number":1},{"id":"0d3703ea25d65ce49187836e51ca1f72442dd9a3","author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"date":"2025-11-13 19:15:19.000000000","message":"Patch Set 1:\n\n(1 comment)","accounts_in_message":[],"_revision_number":1},{"id":"fd672596ff02750858a00b24d04dd3cdb52a976c","author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"date":"2025-11-17 19:31:41.000000000","message":"Patch Set 1:\n\n(1 comment)","accounts_in_message":[],"_revision_number":1},{"id":"d84dc983675ff1b90598bfc28bf60a2301369139","tag":"autogenerated:zuul:automatic-ci","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"},"date":"2025-11-17 19:31:50.000000000","message":"Patch Set 1:\n\nStarting automatic-ci jobs.","accounts_in_message":[],"_revision_number":1},{"id":"b316487dccaf81d4dc9553e71733f0745960217d","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2025-11-17 19:35:57.000000000","message":"Patch Set 1:\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/8661c50409754290a4c1a60f42abb0cd\n\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/fdef7e30a28b46c88bb4bc47e90dad91 : SUCCESS in 3m 27s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/009fccd3fc8d480d970dd71a267fc49b : SUCCESS in 1m 50s","accounts_in_message":[],"_revision_number":1},{"id":"7e6126d9e67bae52b8111e82b6d7e19ae50fa27c","tag":"autogenerated:zuul:automatic-ci","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"},"date":"2025-11-17 19:42:52.000000000","message":"Patch Set 1:\n\n(5 comments)\n\nBuild succeeded (automatic-ci pipeline).\nhttps://zuul.teim.app/t/main/buildset/fd4adb7803e946dfa1a1a0bd088d6884\n\n- teim-code-review https://zuul.teim.app/t/main/build/489b916441284d63b6c8a976217bbf85 : SUCCESS in 10m 42s","accounts_in_message":[],"_revision_number":1},{"id":"a30e6826e2f92c8a29dbf7185168d4d851f37f06","author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"date":"2025-11-18 11:44:48.000000000","message":"Patch Set 1: Code-Review+2 Workflow+1\n\n(1 comment)","accounts_in_message":[],"_revision_number":1},{"id":"f0a9fb748fca4c63d8667feed5a97119cb17ab2e","tag":"autogenerated:zuul:gate","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2025-11-18 11:45:07.000000000","message":"Patch Set 1: -Verified\n\nStarting gate jobs.","accounts_in_message":[],"_revision_number":1},{"id":"391b3482841550071cf33f9873a5e1ab720d2c8c","tag":"autogenerated:zuul:gate","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2025-11-18 11:50:58.000000000","message":"Patch Set 1: Verified+2\n\nBuild succeeded (gate pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/2b61ecece494406ea8ad2a4543bdab70\n\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/29ab1f8f5f4746478e99a980ebc4f62a : SUCCESS in 5m 28s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/aede96f0861e4f688095a0c2b664fd46 : SUCCESS in 2m 15s","accounts_in_message":[],"_revision_number":1},{"id":"5184d8c8d28efed72df9781964cb0990befac8df","tag":"autogenerated:gerrit:merged","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2025-11-18 11:50:58.000000000","message":"Change has been successfully merged","accounts_in_message":[],"_revision_number":1},{"id":"b77b8b4005556dbf26b983715df82dd10af4f160","tag":"autogenerated:zuul:promote","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2025-11-18 11:51:52.000000000","message":"Patch Set 1:\n\nBuild succeeded (promote pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/0975d47f55e546cf89f2fb75c11673db\n\n- promote-openstack-specs https://zuul.opendev.org/t/openstack/build/6d4cfb0b7ea9402ca2cebf06955f3cd0 : SUCCESS in 43s","accounts_in_message":[],"_revision_number":1}],"current_revision_number":1,"current_revision":"0a4cc5892e469901734c68fc54929e0de4dd8c21","revisions":{"0a4cc5892e469901734c68fc54929e0de4dd8c21":{"kind":"REWORK","_number":1,"created":"2025-10-08 18:57:55.000000000","uploader":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"ref":"refs/changes/38/963438/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/watcher-specs","ref":"refs/changes/38/963438/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/watcher-specs refs/changes/38/963438/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/watcher-specs refs/changes/38/963438/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/watcher-specs refs/changes/38/963438/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/watcher-specs refs/changes/38/963438/1"}}},"commit":{"parents":[{"commit":"8f7001f5cad94909fbe3bee92dd999a56fd48cb1","subject":"Add 2026.1 spec dirs and move specs implemented in 2025.2","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher-specs/commit/8f7001f5cad94909fbe3bee92dd999a56fd48cb1"}]}],"author":{"name":"Sean Mooney","email":"work@seanmooney.info","date":"2025-10-08 18:56:21.000000000","tz":60},"committer":{"name":"Sean Mooney","email":"work@seanmooney.info","date":"2025-10-08 18:57:21.000000000","tz":60},"subject":"Improve Watcher Dashboard code quality and test infrastructure","message":"Improve Watcher Dashboard code quality and test infrastructure\n\nEliminate patterns that hinder static analysis by converting direct\nsymbol imports to module-level imports, replacing reflection helpers\nwith direct attribute access, and centralizing Django settings access\nthrough a typed configuration module. Restructure test infrastructure\nto support reusable fixtures following main Watcher project patterns.\n\nThis addresses technical debt that impedes maintainability and\ndeveloper productivity, improving IDE support and enabling better\nstatic analysis for future development.\n\nAssisted-By: claude-code sonnet-4.5\nAssisted-By: cursor gpt5\nChange-Id: I6e66420e7fde1491bc39577e74a507dda18bf4a8\nSigned-off-by: Sean Mooney \u003cwork@seanmooney.info\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher-specs/commit/0a4cc5892e469901734c68fc54929e0de4dd8c21"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher-specs/commit/0a4cc5892e469901734c68fc54929e0de4dd8c21"}]},"branch":"refs/heads/master"}},"requirements":[],"submit_records":[{"rule_name":"gerrit~DefaultSubmitRule","status":"CLOSED","labels":[{"label":"Verified","status":"MAY","applied_by":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}},{"label":"Code-Review","status":"MAY","applied_by":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"}},{"label":"Workflow","status":"MAY","applied_by":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"}}]}],"submit_requirements":[{"name":"Verified","description":"Verified in gate by CI","status":"SATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Verified\u003dMAX AND -label:Verified\u003dMIN","fulfilled":true,"status":"PASS","passing_atoms":["label:Verified\u003dMAX"],"failing_atoms":["label:Verified\u003dMIN"],"atom_explanations":{}}},{"name":"Code-Review","description":"Code reviewed by core reviewer","status":"SATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Code-Review\u003dMAX AND -label:Code-Review\u003dMIN","fulfilled":true,"status":"PASS","passing_atoms":["label:Code-Review\u003dMAX"],"failing_atoms":["label:Code-Review\u003dMIN"],"atom_explanations":{}}},{"name":"Workflow","description":"Approved for gate by core reviewer","status":"SATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Workflow\u003dMAX AND -label:Workflow\u003dMIN","fulfilled":true,"status":"PASS","passing_atoms":["label:Workflow\u003dMAX"],"failing_atoms":["label:Workflow\u003dMIN"],"atom_explanations":{}}}]}
