)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"3bf5e5cefed91b9729595a3e9029a012fef04086","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":1,"id":"0b576dd4_5a9861b7","updated":"2026-03-03 07:32:23.000000000","message":"I think we need to talk about the concept behind this first","commit_id":"e2605e7567a98535a0d8c1a3d42113849465d189"},{"author":{"_account_id":22629,"name":"Michal Nasiadka","email":"mnasiadka@gmail.com","username":"mnasiadka"},"change_message_id":"68af05c1ff748c2b4d9cfbba50891d6e9bbc7d84","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":1,"id":"2e812530_3f077422","updated":"2026-03-02 19:11:44.000000000","message":"Yes, I wanted to try having this as universal as possible, happy to add something more if needed.","commit_id":"e2605e7567a98535a0d8c1a3d42113849465d189"},{"author":{"_account_id":22629,"name":"Michal Nasiadka","email":"mnasiadka@gmail.com","username":"mnasiadka"},"change_message_id":"d6db3fa2b2b903ee868c9faff5e63e6f1ddaf832","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"c7f707a9_eb56401f","in_reply_to":"0b576dd4_5a9861b7","updated":"2026-03-03 17:48:48.000000000","message":"I think based on the other comments - I\u0027ll stick with a target just to update ansible-lint in test-requirements.txt for now.","commit_id":"e2605e7567a98535a0d8c1a3d42113849465d189"},{"author":{"_account_id":22629,"name":"Michal Nasiadka","email":"mnasiadka@gmail.com","username":"mnasiadka"},"change_message_id":"d6db3fa2b2b903ee868c9faff5e63e6f1ddaf832","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"f945c163_8a190922","in_reply_to":"2e812530_3f077422","updated":"2026-03-03 17:48:48.000000000","message":"Done","commit_id":"e2605e7567a98535a0d8c1a3d42113849465d189"}],"playbooks/proposal/pre.yaml":[{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"a1ba5321208cd09681b8edacfe38cd02592a2066","unresolved":true,"context_lines":[{"line_number":24,"context_line":"    - name: Install pip-check-updates"},{"line_number":25,"context_line":"      pip:"},{"line_number":26,"context_line":"        name: pip-check-updates"},{"line_number":27,"context_line":"        virtualenv: /opt/pip-check-updates"},{"line_number":28,"context_line":"        virtualenv_command: \u0027{{ ensure_pip_virtualenv_command }}\u0027"},{"line_number":29,"context_line":"      become: yes"},{"line_number":30,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":5,"id":"86507c8d_a4bbf01c","line":27,"updated":"2026-03-30 12:44:40.000000000","message":"I\u0027m not sure we need different venv for this, maybe use a common `/opt/cpe` venv now before people start proposing more additions? Installation could even be done in a loop around the previous two already existing tasks to avoid repetitions?","commit_id":"29bc68420c9068a2935d22f724f6a0b3a0fc415c"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"943a085374b8554f0231c16857d0c1a143a29101","unresolved":false,"context_lines":[{"line_number":24,"context_line":"    - name: Install pip-check-updates"},{"line_number":25,"context_line":"      pip:"},{"line_number":26,"context_line":"        name: pip-check-updates"},{"line_number":27,"context_line":"        virtualenv: /opt/pip-check-updates"},{"line_number":28,"context_line":"        virtualenv_command: \u0027{{ ensure_pip_virtualenv_command }}\u0027"},{"line_number":29,"context_line":"      become: yes"},{"line_number":30,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":5,"id":"180abe48_735b3bdb","line":27,"in_reply_to":"860b12ec_9b4cb9b7","updated":"2026-04-14 07:55:23.000000000","message":"Done","commit_id":"29bc68420c9068a2935d22f724f6a0b3a0fc415c"},{"author":{"_account_id":22629,"name":"Michal Nasiadka","email":"mnasiadka@gmail.com","username":"mnasiadka"},"change_message_id":"331c1bc150f99ae89c5f4fc783bfe4cef43600ff","unresolved":true,"context_lines":[{"line_number":24,"context_line":"    - name: Install pip-check-updates"},{"line_number":25,"context_line":"      pip:"},{"line_number":26,"context_line":"        name: pip-check-updates"},{"line_number":27,"context_line":"        virtualenv: /opt/pip-check-updates"},{"line_number":28,"context_line":"        virtualenv_command: \u0027{{ ensure_pip_virtualenv_command }}\u0027"},{"line_number":29,"context_line":"      become: yes"},{"line_number":30,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":5,"id":"f56a586c_0e4cb7f6","line":27,"in_reply_to":"86507c8d_a4bbf01c","updated":"2026-04-13 12:39:37.000000000","message":"Where is /opt/cpe being created? I can only see /opt/git-review in this playbook","commit_id":"29bc68420c9068a2935d22f724f6a0b3a0fc415c"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"c6b4179cd84498f9da58b8b1767be5fd0ae08f0f","unresolved":true,"context_lines":[{"line_number":24,"context_line":"    - name: Install pip-check-updates"},{"line_number":25,"context_line":"      pip:"},{"line_number":26,"context_line":"        name: pip-check-updates"},{"line_number":27,"context_line":"        virtualenv: /opt/pip-check-updates"},{"line_number":28,"context_line":"        virtualenv_command: \u0027{{ ensure_pip_virtualenv_command }}\u0027"},{"line_number":29,"context_line":"      become: yes"},{"line_number":30,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":5,"id":"860b12ec_9b4cb9b7","line":27,"in_reply_to":"f56a586c_0e4cb7f6","updated":"2026-04-13 12:56:39.000000000","message":"yes, currently that isn\u0027t created. the idea was to create it instead of `/opt/git-review` and now `/opt/pip-check-updates` so that we have a single shared \"tools\" venv (cpe \u003d \"code preparation environment\" which is how this whole playbook is named)","commit_id":"29bc68420c9068a2935d22f724f6a0b3a0fc415c"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"943a085374b8554f0231c16857d0c1a143a29101","unresolved":true,"context_lines":[{"line_number":19,"context_line":"      become: yes"},{"line_number":20,"context_line":"      loop: \u0027{{ cpe_tools }}\u0027"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"    - name: Link git-review"},{"line_number":23,"context_line":"      file:"},{"line_number":24,"context_line":"        src: \u0027{{ cpe_venv_path }}/bin/{{ item.binary | default(item.name) }}\u0027"},{"line_number":25,"context_line":"        dest: /usr/local/bin/git-review"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"4c945600_0c1e1fe4","line":22,"range":{"start_line":22,"start_character":17,"end_line":22,"end_character":27},"updated":"2026-04-14 07:55:23.000000000","message":"```suggestion\n    - name: Link binary for {{ item.name }}\n```\nlike this? not sure about quoting needed?","commit_id":"2f54d461660f971aa9243c32327dc0275e96325a"},{"author":{"_account_id":22629,"name":"Michal Nasiadka","email":"mnasiadka@gmail.com","username":"mnasiadka"},"change_message_id":"daec19ac365403984568c5645f459f9e04a00db5","unresolved":false,"context_lines":[{"line_number":19,"context_line":"      become: yes"},{"line_number":20,"context_line":"      loop: \u0027{{ cpe_tools }}\u0027"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"    - name: Link git-review"},{"line_number":23,"context_line":"      file:"},{"line_number":24,"context_line":"        src: \u0027{{ cpe_venv_path }}/bin/{{ item.binary | default(item.name) }}\u0027"},{"line_number":25,"context_line":"        dest: /usr/local/bin/git-review"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"8d9eb61c_aedc8807","line":22,"range":{"start_line":22,"start_character":17,"end_line":22,"end_character":27},"in_reply_to":"4c945600_0c1e1fe4","updated":"2026-04-14 08:10:07.000000000","message":"Done","commit_id":"2f54d461660f971aa9243c32327dc0275e96325a"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"943a085374b8554f0231c16857d0c1a143a29101","unresolved":true,"context_lines":[{"line_number":22,"context_line":"    - name: Link git-review"},{"line_number":23,"context_line":"      file:"},{"line_number":24,"context_line":"        src: \u0027{{ cpe_venv_path }}/bin/{{ item.binary | default(item.name) }}\u0027"},{"line_number":25,"context_line":"        dest: /usr/local/bin/git-review"},{"line_number":26,"context_line":"        owner: root"},{"line_number":27,"context_line":"        group: root"},{"line_number":28,"context_line":"        state: link"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"85b495cf_21a866c7","line":25,"range":{"start_line":25,"start_character":29,"end_line":25,"end_character":39},"updated":"2026-04-14 07:55:23.000000000","message":"```suggestion\n        dest: /usr/local/bin/{{ item.binary | default(item.name) }}\n```","commit_id":"2f54d461660f971aa9243c32327dc0275e96325a"},{"author":{"_account_id":22629,"name":"Michal Nasiadka","email":"mnasiadka@gmail.com","username":"mnasiadka"},"change_message_id":"daec19ac365403984568c5645f459f9e04a00db5","unresolved":false,"context_lines":[{"line_number":22,"context_line":"    - name: Link git-review"},{"line_number":23,"context_line":"      file:"},{"line_number":24,"context_line":"        src: \u0027{{ cpe_venv_path }}/bin/{{ item.binary | default(item.name) }}\u0027"},{"line_number":25,"context_line":"        dest: /usr/local/bin/git-review"},{"line_number":26,"context_line":"        owner: root"},{"line_number":27,"context_line":"        group: root"},{"line_number":28,"context_line":"        state: link"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"d99efc29_f20e25c2","line":25,"range":{"start_line":25,"start_character":29,"end_line":25,"end_character":39},"in_reply_to":"85b495cf_21a866c7","updated":"2026-04-14 08:10:07.000000000","message":"Done","commit_id":"2f54d461660f971aa9243c32327dc0275e96325a"}],"playbooks/proposal/propose_update.sh":[{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"3bf5e5cefed91b9729595a3e9029a012fef04086","unresolved":true,"context_lines":[{"line_number":74,"context_line":"    INITIAL_COMMIT_MSG\u003d\"Updated test-requirements from PyPI\""},{"line_number":75,"context_line":"    TOPIC\u003d\"openstack/test-requirements\""},{"line_number":76,"context_line":"    function update {"},{"line_number":77,"context_line":"        tox -e test-reqs-update"},{"line_number":78,"context_line":"    }"},{"line_number":79,"context_line":"else"},{"line_number":80,"context_line":"    echo \"Unknown project $1\" \u003e2"}],"source_content_type":"text/x-sh","patch_set":1,"id":"db0e750f_9d096785","line":77,"updated":"2026-03-03 07:32:23.000000000","message":"isn\u0027t it dangerous to run project based code here as that may be used to exfiltrate the secrets that are used in this job? even if the job only runs in the project pipeline, having to rely on all the project teams to be aware of this and act accordingly during reviews seems to be quite a stretch","commit_id":"e2605e7567a98535a0d8c1a3d42113849465d189"},{"author":{"_account_id":22629,"name":"Michal Nasiadka","email":"mnasiadka@gmail.com","username":"mnasiadka"},"change_message_id":"d6db3fa2b2b903ee868c9faff5e63e6f1ddaf832","unresolved":false,"context_lines":[{"line_number":74,"context_line":"    INITIAL_COMMIT_MSG\u003d\"Updated test-requirements from PyPI\""},{"line_number":75,"context_line":"    TOPIC\u003d\"openstack/test-requirements\""},{"line_number":76,"context_line":"    function update {"},{"line_number":77,"context_line":"        tox -e test-reqs-update"},{"line_number":78,"context_line":"    }"},{"line_number":79,"context_line":"else"},{"line_number":80,"context_line":"    echo \"Unknown project $1\" \u003e2"}],"source_content_type":"text/x-sh","patch_set":1,"id":"2749c197_3217768f","line":77,"in_reply_to":"db0e750f_9d096785","updated":"2026-03-03 17:48:48.000000000","message":"I haven\u0027t thought about that aspect.","commit_id":"e2605e7567a98535a0d8c1a3d42113849465d189"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"a1ba5321208cd09681b8edacfe38cd02592a2066","unresolved":true,"context_lines":[{"line_number":70,"context_line":"        curl https://service-types.openstack.org/service-types.json \u003e os_service_types/data/service-types.json"},{"line_number":71,"context_line":"        popd"},{"line_number":72,"context_line":"    }"},{"line_number":73,"context_line":"elif [ \"$OWN_PROJECT\" \u003d\u003d \"pcu\" ] ; then"},{"line_number":74,"context_line":"    INITIAL_COMMIT_MSG\u003d\"Updated ${PCU_PACKAGES} in ${PCU_FILE}\""},{"line_number":75,"context_line":"    TOPIC\u003d\"openstack/pcu\""},{"line_number":76,"context_line":"    function update {"}],"source_content_type":"text/x-sh","patch_set":5,"id":"26ca03c2_a555f2e9","line":73,"range":{"start_line":73,"start_character":26,"end_line":73,"end_character":29},"updated":"2026-03-30 12:44:40.000000000","message":"```suggestion\nelif [ \"$OWN_PROJECT\" \u003d\u003d \"pip-check-updates\" ] ; then\n```\nI think I\u0027d prefer readability instead of brevity here, same for the TOPIC below","commit_id":"29bc68420c9068a2935d22f724f6a0b3a0fc415c"},{"author":{"_account_id":22629,"name":"Michal Nasiadka","email":"mnasiadka@gmail.com","username":"mnasiadka"},"change_message_id":"5a1c6cf70c416293806e938d24155e766fbc769e","unresolved":false,"context_lines":[{"line_number":70,"context_line":"        curl https://service-types.openstack.org/service-types.json \u003e os_service_types/data/service-types.json"},{"line_number":71,"context_line":"        popd"},{"line_number":72,"context_line":"    }"},{"line_number":73,"context_line":"elif [ \"$OWN_PROJECT\" \u003d\u003d \"pcu\" ] ; then"},{"line_number":74,"context_line":"    INITIAL_COMMIT_MSG\u003d\"Updated ${PCU_PACKAGES} in ${PCU_FILE}\""},{"line_number":75,"context_line":"    TOPIC\u003d\"openstack/pcu\""},{"line_number":76,"context_line":"    function update {"}],"source_content_type":"text/x-sh","patch_set":5,"id":"2a5c51f1_3f7b74ee","line":73,"range":{"start_line":73,"start_character":26,"end_line":73,"end_character":29},"in_reply_to":"26ca03c2_a555f2e9","updated":"2026-04-07 07:58:49.000000000","message":"Fix applied.","commit_id":"29bc68420c9068a2935d22f724f6a0b3a0fc415c"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"a1ba5321208cd09681b8edacfe38cd02592a2066","unresolved":true,"context_lines":[{"line_number":74,"context_line":"    INITIAL_COMMIT_MSG\u003d\"Updated ${PCU_PACKAGES} in ${PCU_FILE}\""},{"line_number":75,"context_line":"    TOPIC\u003d\"openstack/pcu\""},{"line_number":76,"context_line":"    function update {"},{"line_number":77,"context_line":"        pcu ${PCU_FILE} -f ${PCU_PACKAGES} -u"},{"line_number":78,"context_line":"    }"},{"line_number":79,"context_line":"else"},{"line_number":80,"context_line":"    echo \"Unknown project $1\" \u003e2"}],"source_content_type":"text/x-sh","patch_set":5,"id":"c20307f8_4c01a247","line":77,"range":{"start_line":77,"start_character":29,"end_line":77,"end_character":41},"updated":"2026-03-30 12:44:40.000000000","message":"since the default for PCU_PACKAGES is an empty list, do we need a check here to verify the parameter is non-empty?","commit_id":"29bc68420c9068a2935d22f724f6a0b3a0fc415c"},{"author":{"_account_id":22629,"name":"Michal Nasiadka","email":"mnasiadka@gmail.com","username":"mnasiadka"},"change_message_id":"331c1bc150f99ae89c5f4fc783bfe4cef43600ff","unresolved":false,"context_lines":[{"line_number":74,"context_line":"    INITIAL_COMMIT_MSG\u003d\"Updated ${PCU_PACKAGES} in ${PCU_FILE}\""},{"line_number":75,"context_line":"    TOPIC\u003d\"openstack/pcu\""},{"line_number":76,"context_line":"    function update {"},{"line_number":77,"context_line":"        pcu ${PCU_FILE} -f ${PCU_PACKAGES} -u"},{"line_number":78,"context_line":"    }"},{"line_number":79,"context_line":"else"},{"line_number":80,"context_line":"    echo \"Unknown project $1\" \u003e2"}],"source_content_type":"text/x-sh","patch_set":5,"id":"815f5ea0_27213962","line":77,"range":{"start_line":77,"start_character":29,"end_line":77,"end_character":41},"in_reply_to":"c20307f8_4c01a247","updated":"2026-04-13 12:39:37.000000000","message":"Done","commit_id":"29bc68420c9068a2935d22f724f6a0b3a0fc415c"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"c6b4179cd84498f9da58b8b1767be5fd0ae08f0f","unresolved":true,"context_lines":[{"line_number":70,"context_line":"        curl https://service-types.openstack.org/service-types.json \u003e os_service_types/data/service-types.json"},{"line_number":71,"context_line":"        popd"},{"line_number":72,"context_line":"    }"},{"line_number":73,"context_line":"elif [ \"$OWN_PROJECT\" \u003d\u003d \"pip-check-updates\" \u0026\u0026 ! -z \"$PCU_PACKAGES\" ] ; then"},{"line_number":74,"context_line":"    INITIAL_COMMIT_MSG\u003d\"Updated ${PCU_PACKAGES} in ${PCU_FILE}\""},{"line_number":75,"context_line":"    TOPIC\u003d\"openstack/pcu\""},{"line_number":76,"context_line":"    function update {"}],"source_content_type":"text/x-sh","patch_set":7,"id":"be8cdd59_4e1d08f2","line":73,"range":{"start_line":73,"start_character":48,"end_line":73,"end_character":52},"updated":"2026-04-13 12:56:39.000000000","message":"nit: this can be contracted\n```suggestion\nelif [ \"$OWN_PROJECT\" \u003d\u003d \"pip-check-updates\" \u0026\u0026 -n \"$PCU_PACKAGES\" ] ; then\n```","commit_id":"edb97697df266c8522d925a23a228bb79f89597d"},{"author":{"_account_id":22629,"name":"Michal Nasiadka","email":"mnasiadka@gmail.com","username":"mnasiadka"},"change_message_id":"fbcfeff5d4e099eb5d465f29b03ed0fb94138cd8","unresolved":false,"context_lines":[{"line_number":70,"context_line":"        curl https://service-types.openstack.org/service-types.json \u003e os_service_types/data/service-types.json"},{"line_number":71,"context_line":"        popd"},{"line_number":72,"context_line":"    }"},{"line_number":73,"context_line":"elif [ \"$OWN_PROJECT\" \u003d\u003d \"pip-check-updates\" \u0026\u0026 ! -z \"$PCU_PACKAGES\" ] ; then"},{"line_number":74,"context_line":"    INITIAL_COMMIT_MSG\u003d\"Updated ${PCU_PACKAGES} in ${PCU_FILE}\""},{"line_number":75,"context_line":"    TOPIC\u003d\"openstack/pcu\""},{"line_number":76,"context_line":"    function update {"}],"source_content_type":"text/x-sh","patch_set":7,"id":"3e14636f_3343a07b","line":73,"range":{"start_line":73,"start_character":48,"end_line":73,"end_character":52},"in_reply_to":"be8cdd59_4e1d08f2","updated":"2026-04-13 12:59:04.000000000","message":"Fix applied.","commit_id":"edb97697df266c8522d925a23a228bb79f89597d"}],"zuul.d/projects.yaml":[{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"a1ba5321208cd09681b8edacfe38cd02592a2066","unresolved":true,"context_lines":[{"line_number":600,"context_line":"            branches: master"},{"line_number":601,"context_line":"            vars:"},{"line_number":602,"context_line":"              update_target: pcu"},{"line_number":603,"context_line":"              pcu_file: \"test-requirements.txt\""},{"line_number":604,"context_line":"              pcu_packages:"},{"line_number":605,"context_line":"                - ansible-lint"},{"line_number":606,"context_line":"    templates:"}],"source_content_type":"text/x-yaml","patch_set":5,"id":"442f2fe9_2de62c8b","line":603,"updated":"2026-03-30 12:44:40.000000000","message":"no need to specify the default value?","commit_id":"29bc68420c9068a2935d22f724f6a0b3a0fc415c"},{"author":{"_account_id":22629,"name":"Michal Nasiadka","email":"mnasiadka@gmail.com","username":"mnasiadka"},"change_message_id":"331c1bc150f99ae89c5f4fc783bfe4cef43600ff","unresolved":false,"context_lines":[{"line_number":600,"context_line":"            branches: master"},{"line_number":601,"context_line":"            vars:"},{"line_number":602,"context_line":"              update_target: pcu"},{"line_number":603,"context_line":"              pcu_file: \"test-requirements.txt\""},{"line_number":604,"context_line":"              pcu_packages:"},{"line_number":605,"context_line":"                - ansible-lint"},{"line_number":606,"context_line":"    templates:"}],"source_content_type":"text/x-yaml","patch_set":5,"id":"ede41a06_864c23e0","line":603,"in_reply_to":"442f2fe9_2de62c8b","updated":"2026-04-13 12:39:37.000000000","message":"Done","commit_id":"29bc68420c9068a2935d22f724f6a0b3a0fc415c"}]}
