)]}'
{"playbooks/pydtr-full.yaml":[{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"51deab4a7b2f3376c2e7b7b530dfcedd7b45f4fc","unresolved":true,"context_lines":[{"line_number":8,"context_line":"      args:"},{"line_number":9,"context_line":"        chdir: \"{{ drizzle_test_dir }}\""},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"    - name: Initialize mutable stestr stream counter"},{"line_number":12,"context_line":"      copy:"},{"line_number":13,"context_line":"        dest: \"{{ drizzle_test_dir }}/.stestr/next-stream\""},{"line_number":14,"context_line":"        content: \"0\\n\""}],"source_content_type":"text/x-yaml","patch_set":2,"id":"436975c3_caedabd6","line":11,"updated":"2026-06-14 13:03:56.000000000","message":"Why are we doing this? These nodes are all ephemeral. We don\u0027t need to pre-initialize stestr files.","commit_id":"fca8fc87cff0005b90d9527bdc6fef1f8c0a2f3f"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"1258c44a788a47a86a1a2fda7f7e510308cdc3f6","unresolved":false,"context_lines":[{"line_number":8,"context_line":"      args:"},{"line_number":9,"context_line":"        chdir: \"{{ drizzle_test_dir }}\""},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"    - name: Initialize mutable stestr stream counter"},{"line_number":12,"context_line":"      copy:"},{"line_number":13,"context_line":"        dest: \"{{ drizzle_test_dir }}/.stestr/next-stream\""},{"line_number":14,"context_line":"        content: \"0\\n\""}],"source_content_type":"text/x-yaml","patch_set":2,"id":"b4c6e196_513c54b8","line":11,"in_reply_to":"436975c3_caedabd6","updated":"2026-06-15 21:17:10.000000000","message":"Done","commit_id":"fca8fc87cff0005b90d9527bdc6fef1f8c0a2f3f"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"51deab4a7b2f3376c2e7b7b530dfcedd7b45f4fc","unresolved":true,"context_lines":[{"line_number":18,"context_line":"    - name: Run pydtr image-backed full test suite"},{"line_number":19,"context_line":"      command: \"{{ uv_bin }} run --frozen python -m pydtr.smoke --selector full\""},{"line_number":20,"context_line":"      environment:"},{"line_number":21,"context_line":"        PYDTR_SELECTOR: full"},{"line_number":22,"context_line":"      args:"},{"line_number":23,"context_line":"        chdir: \"{{ drizzle_test_dir }}\""}],"source_content_type":"text/x-yaml","patch_set":2,"id":"c4f84677_bb3403a5","line":21,"updated":"2026-06-14 13:03:56.000000000","message":"We\u0027re passing both environment and command line. Pick one.","commit_id":"fca8fc87cff0005b90d9527bdc6fef1f8c0a2f3f"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"1258c44a788a47a86a1a2fda7f7e510308cdc3f6","unresolved":false,"context_lines":[{"line_number":18,"context_line":"    - name: Run pydtr image-backed full test suite"},{"line_number":19,"context_line":"      command: \"{{ uv_bin }} run --frozen python -m pydtr.smoke --selector full\""},{"line_number":20,"context_line":"      environment:"},{"line_number":21,"context_line":"        PYDTR_SELECTOR: full"},{"line_number":22,"context_line":"      args:"},{"line_number":23,"context_line":"        chdir: \"{{ drizzle_test_dir }}\""}],"source_content_type":"text/x-yaml","patch_set":2,"id":"b1b64fb9_4c6a1e22","line":21,"in_reply_to":"c4f84677_bb3403a5","updated":"2026-06-15 21:17:10.000000000","message":"Done","commit_id":"fca8fc87cff0005b90d9527bdc6fef1f8c0a2f3f"}],"pydtr/tests/test_zuul.py":[{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"51deab4a7b2f3376c2e7b7b530dfcedd7b45f4fc","unresolved":true,"context_lines":[{"line_number":5,"context_line":"import testtools"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":""},{"line_number":8,"context_line":"class ZuulJobTest(testtools.TestCase):"},{"line_number":9,"context_line":"    def test_pydtr_smoke_job_is_image_backed_and_voting(self) -\u003e None:"},{"line_number":10,"context_line":"        zuul_yaml \u003d Path(\".zuul.yaml\").read_text()"},{"line_number":11,"context_line":"        smoke_job \u003d _job_block(zuul_yaml, \"drizzle-test-pydtr-smoke\")"}],"source_content_type":"text/x-python","patch_set":2,"id":"a6425a81_a07fb7d4","line":8,"updated":"2026-06-14 13:03:56.000000000","message":"I missed this before. We don\u0027t need a unit test of the zuul job definition. Zuul jobs are, by their nature, self testing. All these jobs server to do is re-express the contents of the zuul yaml in a second form. Please remove this entire file.","commit_id":"fca8fc87cff0005b90d9527bdc6fef1f8c0a2f3f"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"1258c44a788a47a86a1a2fda7f7e510308cdc3f6","unresolved":false,"context_lines":[{"line_number":5,"context_line":"import testtools"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":""},{"line_number":8,"context_line":"class ZuulJobTest(testtools.TestCase):"},{"line_number":9,"context_line":"    def test_pydtr_smoke_job_is_image_backed_and_voting(self) -\u003e None:"},{"line_number":10,"context_line":"        zuul_yaml \u003d Path(\".zuul.yaml\").read_text()"},{"line_number":11,"context_line":"        smoke_job \u003d _job_block(zuul_yaml, \"drizzle-test-pydtr-smoke\")"}],"source_content_type":"text/x-python","patch_set":2,"id":"2848bd8d_70037658","line":8,"in_reply_to":"a6425a81_a07fb7d4","updated":"2026-06-15 21:17:10.000000000","message":"Done","commit_id":"fca8fc87cff0005b90d9527bdc6fef1f8c0a2f3f"}]}
