)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"feaa84a36869f91abbe452511d6a314f8e69049a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"c79fcaa3_b372f1a3","updated":"2026-04-08 14:53:36.000000000","message":"I have no real horse in this race but I\u0027m spotted it in the context of the recent nodeset changes","commit_id":"a91e22f14ceede9c55ea0ca5775e003942b56122"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"19ff0b8d3d82c9e7abb84e9b76959ad44541f8c9","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":1,"id":"bcf189e1_d2caee32","updated":"2026-04-08 13:36:19.000000000","message":"this should unblock ci","commit_id":"a91e22f14ceede9c55ea0ca5775e003942b56122"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"2273df18367014f5729f51a824f6a504d20438a9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"a9abaec5_84b7fcac","in_reply_to":"c79fcaa3_b372f1a3","updated":"2026-04-08 15:03:33.000000000","message":"`s/I\u0027m/I/`","commit_id":"a91e22f14ceede9c55ea0ca5775e003942b56122"},{"author":{"_account_id":6413,"name":"Victoria Martinez de la Cruz","email":"victoria@redhat.com","username":"vkmc"},"change_message_id":"7c6cd1dbe4a5be84919a4a68eb2ce61b7713fc3d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"b176109c_887806fd","updated":"2026-04-10 15:14:33.000000000","message":"LGTM, thanks Sean!","commit_id":"14f09957a96fa99474c7586d245c177eee37f24f"}],"README.rst":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"feaa84a36869f91abbe452511d6a314f8e69049a","unresolved":true,"context_lines":[{"line_number":9,"context_line":"* Bugs: https://bugs.launchpad.net/grian-ui"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":""},{"line_number":12,"context_line":".."},{"line_number":13,"context_line":"   TODO: move to contributor docs."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Making Changes \u0026 Contributing"},{"line_number":16,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"c5aea0f6_fd4da6e7","line":13,"range":{"start_line":12,"start_character":0,"end_line":13,"end_character":34},"updated":"2026-04-08 14:53:36.000000000","message":"Once you omit the second `:` this will just render as a comment\n\n\n\n```suggestion\n.. TODO: move to contributor docs.\n```","commit_id":"a91e22f14ceede9c55ea0ca5775e003942b56122"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"0564441154ee7ae97ccb5b82148279fd66d0d960","unresolved":true,"context_lines":[{"line_number":9,"context_line":"* Bugs: https://bugs.launchpad.net/grian-ui"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":""},{"line_number":12,"context_line":".."},{"line_number":13,"context_line":"   TODO: move to contributor docs."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Making Changes \u0026 Contributing"},{"line_number":16,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5f80520c_22ccc0a4","line":13,"range":{"start_line":12,"start_character":0,"end_line":13,"end_character":34},"in_reply_to":"c5aea0f6_fd4da6e7","updated":"2026-04-08 16:02:22.000000000","message":"fair i kind of jsut want to get the ci passing and then resolve the todo properly by moving it to the contib docs.\n\nwe should not really use todos like this in the readme given it will be used for the pypi page i just didnt want to do that in this commit","commit_id":"a91e22f14ceede9c55ea0ca5775e003942b56122"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"feaa84a36869f91abbe452511d6a314f8e69049a","unresolved":true,"context_lines":[{"line_number":156,"context_line":"    - job_name: \"node\""},{"line_number":157,"context_line":"      static_configs:"},{"line_number":158,"context_line":"        - targets: [\"localhost:3000\"]"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":".."},{"line_number":161,"context_line":"   TODO: enable Grian-UI when we add any content."},{"line_number":162,"context_line":"   and move the devstack example to the devstack plugin"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"if you are running devstack on a remote vm you can forward the development server endpoint locally using the following command ::"},{"line_number":165,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"8c9af00a_25876df9","line":162,"range":{"start_line":159,"start_character":1,"end_line":162,"end_character":55},"updated":"2026-04-08 14:53:36.000000000","message":"```suggestion\n\n.. TODO: enable Grian-UI when we add any content.\n.. and move the devstack example to the devstack plugin\n```\n\nNote that I\u0027m not sure if the second `..` is needed or not...","commit_id":"a91e22f14ceede9c55ea0ca5775e003942b56122"},{"author":{"_account_id":6413,"name":"Victoria Martinez de la Cruz","email":"victoria@redhat.com","username":"vkmc"},"change_message_id":"7c6cd1dbe4a5be84919a4a68eb2ce61b7713fc3d","unresolved":true,"context_lines":[{"line_number":156,"context_line":"    - job_name: \"node\""},{"line_number":157,"context_line":"      static_configs:"},{"line_number":158,"context_line":"        - targets: [\"localhost:3000\"]"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":".."},{"line_number":161,"context_line":"   TODO: enable Grian-UI when we add any content."},{"line_number":162,"context_line":"   and move the devstack example to the devstack plugin"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"if you are running devstack on a remote vm you can forward the development server endpoint locally using the following command ::"},{"line_number":165,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"a1715210_7146fdcc","line":162,"range":{"start_line":159,"start_character":1,"end_line":162,"end_character":55},"in_reply_to":"8c9af00a_25876df9","updated":"2026-04-10 15:14:33.000000000","message":"Not needed AFAIK","commit_id":"a91e22f14ceede9c55ea0ca5775e003942b56122"}],"tox.ini":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"feaa84a36869f91abbe452511d6a314f8e69049a","unresolved":true,"context_lines":[{"line_number":125,"context_line":"commands \u003d"},{"line_number":126,"context_line":"    ./manage.py runserver"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"[testenv:pypi-check]"},{"line_number":129,"context_line":"description \u003d"},{"line_number":130,"context_line":"    Build the package and run twine and pyproject checks."},{"line_number":131,"context_line":"deps \u003d"},{"line_number":132,"context_line":"    build"},{"line_number":133,"context_line":"    twine"},{"line_number":134,"context_line":"    validate-pyproject"},{"line_number":135,"context_line":"allowlist_externals \u003d"},{"line_number":136,"context_line":"    rm"},{"line_number":137,"context_line":"commands \u003d"},{"line_number":138,"context_line":"    rm -rf {toxinidir}/dist"},{"line_number":139,"context_line":"    python -m build --outdir {toxinidir}/dist {toxinidir}"},{"line_number":140,"context_line":"    twine check --strict {toxinidir}/dist/*"},{"line_number":141,"context_line":"    validate-pyproject {toxinidir}/pyproject.toml"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"[flake8]"}],"source_content_type":"text/x-properties","patch_set":1,"id":"872fd876_e8f09750","line":141,"range":{"start_line":128,"start_character":0,"end_line":141,"end_character":49},"updated":"2026-04-08 14:53:36.000000000","message":"Don\u0027t we have a gate job to do this? I\u0027d be personally reluctant to do this locally since it\u0027ll drift from the gate job (which doesn\u0027t use this tox env)","commit_id":"a91e22f14ceede9c55ea0ca5775e003942b56122"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"9cdb198f815322182802cfe383bd6b2822b3d000","unresolved":true,"context_lines":[{"line_number":125,"context_line":"commands \u003d"},{"line_number":126,"context_line":"    ./manage.py runserver"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"[testenv:pypi-check]"},{"line_number":129,"context_line":"description \u003d"},{"line_number":130,"context_line":"    Build the package and run twine and pyproject checks."},{"line_number":131,"context_line":"deps \u003d"},{"line_number":132,"context_line":"    build"},{"line_number":133,"context_line":"    twine"},{"line_number":134,"context_line":"    validate-pyproject"},{"line_number":135,"context_line":"allowlist_externals \u003d"},{"line_number":136,"context_line":"    rm"},{"line_number":137,"context_line":"commands \u003d"},{"line_number":138,"context_line":"    rm -rf {toxinidir}/dist"},{"line_number":139,"context_line":"    python -m build --outdir {toxinidir}/dist {toxinidir}"},{"line_number":140,"context_line":"    twine check --strict {toxinidir}/dist/*"},{"line_number":141,"context_line":"    validate-pyproject {toxinidir}/pyproject.toml"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"[flake8]"}],"source_content_type":"text/x-properties","patch_set":1,"id":"a6aa9c5b_97cbb7a6","line":141,"range":{"start_line":128,"start_character":0,"end_line":141,"end_character":49},"in_reply_to":"4506fda7_78c61b29","updated":"2026-04-08 16:24:28.000000000","message":"by the way if other prefer we coudl put it in the pep8 job but this did not feel nessiarly i was intenrally not adding it there to not duplicate the building and check in 2 jobs","commit_id":"a91e22f14ceede9c55ea0ca5775e003942b56122"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"0564441154ee7ae97ccb5b82148279fd66d0d960","unresolved":true,"context_lines":[{"line_number":125,"context_line":"commands \u003d"},{"line_number":126,"context_line":"    ./manage.py runserver"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"[testenv:pypi-check]"},{"line_number":129,"context_line":"description \u003d"},{"line_number":130,"context_line":"    Build the package and run twine and pyproject checks."},{"line_number":131,"context_line":"deps \u003d"},{"line_number":132,"context_line":"    build"},{"line_number":133,"context_line":"    twine"},{"line_number":134,"context_line":"    validate-pyproject"},{"line_number":135,"context_line":"allowlist_externals \u003d"},{"line_number":136,"context_line":"    rm"},{"line_number":137,"context_line":"commands \u003d"},{"line_number":138,"context_line":"    rm -rf {toxinidir}/dist"},{"line_number":139,"context_line":"    python -m build --outdir {toxinidir}/dist {toxinidir}"},{"line_number":140,"context_line":"    twine check --strict {toxinidir}/dist/*"},{"line_number":141,"context_line":"    validate-pyproject {toxinidir}/pyproject.toml"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"[flake8]"}],"source_content_type":"text/x-properties","patch_set":1,"id":"4506fda7_78c61b29","line":141,"range":{"start_line":128,"start_character":0,"end_line":141,"end_character":49},"in_reply_to":"872fd876_e8f09750","updated":"2026-04-08 16:02:22.000000000","message":"we do `test-release-openstack`\n\nis the thing that actully validating this in ci this is here so that we dont have to install twin and remember what the command are nothing more\n\n\ni just wanted somethign so that you do not have to read the ansible playbook in the project-cofnig repo to figure out how to repoduce locally.","commit_id":"a91e22f14ceede9c55ea0ca5775e003942b56122"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"36c59324b6bbf930bb988aa49596693ec15aa2c4","unresolved":true,"context_lines":[{"line_number":65,"context_line":"commands \u003d"},{"line_number":66,"context_line":"    pre-commit run --all-files --show-diff-on-failure"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"[testenv:{unit,py3,py310,py311,py312,py313,py314}]"},{"line_number":69,"context_line":"description \u003d"},{"line_number":70,"context_line":"    Run granular unit tests without horizon."},{"line_number":71,"context_line":"set_env \u003d"}],"source_content_type":"text/x-properties","patch_set":2,"id":"07b29878_9a5a9981","line":68,"updated":"2026-04-08 16:29:02.000000000","message":"this is all that is needed to fix the py314 tox job so we might as well fix that while we are here","commit_id":"14f09957a96fa99474c7586d245c177eee37f24f"}]}
