)]}'
{"id":"openstack%2Fwatcher~983940","triplet_id":"openstack%2Fwatcher~master~I7d5b4456cc1c93ac107171286b3cf64d043a6b29","project":"openstack/watcher","branch":"master","topic":"local-pre-commit","attention_set":{},"removed_from_attention_set":{"11604":{"account":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"last_update":"2026-05-04 17:24:49.000000000","reason":"Change was submitted"}},"hashtags":[],"change_id":"I7d5b4456cc1c93ac107171286b3cf64d043a6b29","subject":"Add hook smoke-test script","status":"MERGED","created":"2026-04-09 21:04:59.000000000","updated":"2026-05-04 17:27:40.000000000","submitted":"2026-05-04 17:24:49.000000000","submitter":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"total_comment_count":1,"unresolved_comment_count":0,"has_review_started":true,"submission_id":"983940-local-pre-commit","meta_rev_id":"c21b5e0348078f21f2b7136fac5faad9b5af59d2","_number":983940,"virtual_id_number":983940,"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":[{"tag":"autogenerated:zuul:gate","value":2,"date":"2026-05-04 17:24:49.000000000","permitted_voting_range":{"min":2,"max":2},"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"value":0,"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},{"value":0,"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"}],"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":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"all":[{"value":0,"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"value":2,"date":"2026-04-28 10:14:58.000000000","permitted_voting_range":{"min":2,"max":2},"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},{"value":2,"date":"2026-05-04 15:40:24.000000000","permitted_voting_range":{"min":2,"max":2},"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"}],"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":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"all":[{"value":0,"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"value":0,"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},{"value":1,"date":"2026-05-04 15:40:28.000000000","permitted_voting_range":{"min":1,"max":1},"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"}],"values":{"-1":"Work in progress"," 0":"Ready for reviews","+1":"Approved"},"description":"","default_value":0,"optional":true}},"removable_reviewers":[],"reviewers":{"REVIEWER":[{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2026-04-09 21:16:22.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":"2026-04-28 10:14:58.000000000","updated_by":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"reviewer":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"state":"REVIEWER"},{"updated":"2026-05-04 15:40:24.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"}],"messages":[{"id":"b8ac5cdaf097000fb324aa71ad39292ab6aedae4","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"date":"2026-04-09 21:04:59.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"24eb4334e3a30dfc56d886d9ae3ec0bef5752fb5","tag":"autogenerated:gerrit:setTopic","author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"date":"2026-04-09 21:07:04.000000000","message":"Topic hacking removed","accounts_in_message":[],"_revision_number":1},{"id":"c50f8c5cbeb853022645b53857898659fcaadac3","tag":"autogenerated:gerrit:setTopic","author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"date":"2026-04-09 21:07:07.000000000","message":"Topic set to local-pre-commit","accounts_in_message":[],"_revision_number":1},{"id":"2dff45b08d580817b76b942994743fda428641d0","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-04-09 21:16:22.000000000","message":"Patch Set 1: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/310e979d89e047a88dabecd989be53d0\n\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/3729e7b3d4584062b61f63399e9b8b9c : SUCCESS in 4m 03s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/7e82f68fff29426fa22c3d25bac8e193 : SUCCESS in 2m 52s\n- openstack-tox-py310 https://zuul.opendev.org/t/openstack/build/d9874dd8942148988d87de6ef11a7661 : SUCCESS in 5m 45s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/23b5d177deb24c4f94fe1122e7bf0373 : SUCCESS in 5m 43s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/5934fd744bf244f0b5b83389c300e135 : SUCCESS in 6m 51s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/8916735ecf3d409989f44e0758c7903e : SUCCESS in 4m 30s\n- openstack-tox-py313-eventlet https://zuul.opendev.org/t/openstack/build/5e09bf0366be4c038e94282cb646e592 : SUCCESS in 5m 03s","accounts_in_message":[],"_revision_number":1},{"id":"355eb603925a71c930c8e37a0b7a251618c9612f","author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"date":"2026-04-28 10:14:58.000000000","message":"Patch Set 1: Code-Review+2\n\n(1 comment)","accounts_in_message":[],"_revision_number":1},{"id":"733cdb2e98de1f98c336e2435e527d5cd6d02430","author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"date":"2026-05-04 15:40:24.000000000","message":"Patch Set 1: Code-Review+2","accounts_in_message":[],"_revision_number":1},{"id":"eb1b3a795ac818cb802e05b63022bac40e2e27bc","author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"date":"2026-05-04 15:40:28.000000000","message":"Patch Set 1: Workflow+1","accounts_in_message":[],"_revision_number":1},{"id":"27a44993d4667aea18cd81b28622d99c1a2efd65","tag":"autogenerated:zuul:gate","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-05-04 15:40:46.000000000","message":"Patch Set 1: -Verified\n\nStarting gate jobs.","accounts_in_message":[],"_revision_number":1},{"id":"52380c552d5d3b8d979dadfc61edbc564a72b7a3","tag":"autogenerated:zuul:gate","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-05-04 17:24:49.000000000","message":"Patch Set 1: Verified+2\n\nBuild succeeded (gate pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/48a4c3f33d9e49678cfb5ce4238877ee\n\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/e84956b1ce7c44a496f1212f38600c0b : SUCCESS in 4m 10s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/9cf92f42bd594f61b0bd2b4cc5b8e062 : SUCCESS in 5m 03s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/4718bbd1918341cd8db3a362c6c88ffc : SUCCESS in 4m 40s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/1fa6ab5dda9645fe9da2755196b3dc2a : SUCCESS in 7m 59s\n- openstack-tox-py313-eventlet https://zuul.opendev.org/t/openstack/build/cef7661424644db19f50e955b6f7593b : SUCCESS in 4m 37s","accounts_in_message":[],"_revision_number":1},{"id":"a6b74084c665660a8887e7bd590b9e2b389b2551","tag":"autogenerated:gerrit:merged","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-05-04 17:24:49.000000000","message":"Change has been successfully merged","accounts_in_message":[],"_revision_number":1},{"id":"c21b5e0348078f21f2b7136fac5faad9b5af59d2","tag":"autogenerated:zuul:promote","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-05-04 17:27:40.000000000","message":"Patch Set 1:\n\nBuild succeeded (promote pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/8824b52b5f204f1db8475c7ca1d28e81\n\n- promote-openstack-tox-docs https://zuul.opendev.org/t/openstack/build/0582f9b133cb4cac99eeb7e8a95d44dc : SUCCESS in 1m 43s","accounts_in_message":[],"_revision_number":1}],"current_revision_number":1,"current_revision":"84dbcd478b16f09e5f1683ab0f0cb3ebdfee973e","revisions":{"84dbcd478b16f09e5f1683ab0f0cb3ebdfee973e":{"kind":"REWORK","_number":1,"created":"2026-04-09 21:04:59.000000000","uploader":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"ref":"refs/changes/40/983940/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/watcher","ref":"refs/changes/40/983940/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/watcher refs/changes/40/983940/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/watcher refs/changes/40/983940/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/watcher refs/changes/40/983940/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/watcher refs/changes/40/983940/1"}}},"commit":{"parents":[{"commit":"c7bbed028bc3e9c034d87e6cebe7a6b3a2dd7bf4","subject":"Convert remote pre-commit hooks to local pip hooks","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher/commit/c7bbed028bc3e9c034d87e6cebe7a6b3a2dd7bf4"}]}],"author":{"name":"Sean Mooney","email":"work@seanmooney.info","date":"2026-04-09 21:03:00.000000000","tz":60},"committer":{"name":"Sean Mooney","email":"work@seanmooney.info","date":"2026-04-09 21:03:00.000000000","tz":60},"subject":"Add hook smoke-test script","message":"Add hook smoke-test script\n\ntools/test-pre-commit-hooks.sh verifies that each of the 20\npre-commit hooks catches its target violation. Useful after\nhook config changes to confirm behaviour is preserved.\n\nEach hook is tested by feeding it a minimal bad input and\nasserting it exits non-zero (or for fixer hooks, that it\nmodifies the file). Notable edge cases documented:\n- check-merge-conflict requires --assume-in-merge outside\n  an active git merge; tested via the entry point directly\n- check-case-conflict skipped (requires case-insensitive FS)\n- ruff-format is a fixer; verified by file content change\n- doc8 exempts RST adornments from line-length checks;\n  test uses prose text with spaces\n\nGenerated-By: claude-sonnet-4-6\nChange-Id: I7d5b4456cc1c93ac107171286b3cf64d043a6b29\nSigned-off-by: Sean Mooney \u003cwork@seanmooney.info\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher/commit/84dbcd478b16f09e5f1683ab0f0cb3ebdfee973e"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher/commit/84dbcd478b16f09e5f1683ab0f0cb3ebdfee973e"}]},"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":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"}},{"label":"Workflow","status":"MAY","applied_by":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"}}]}],"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":{"label:Verified\u003dMAX":"","label:Verified\u003dMIN":""}}},{"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":{"label:Code-Review\u003dMAX":"","label:Code-Review\u003dMIN":""}}},{"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":{"label:Workflow\u003dMAX":"","label:Workflow\u003dMIN":""}}}]}
