)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"37d15ae8ed247619f4086c901b457d82ef91b0db","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"4fec9cf9_6f1e9155","updated":"2023-08-17 21:40:05.000000000","message":"Some thoughts inline. Also, I think https://review.opendev.org/c/zuul/zuul/+/890591 will conflict with this change. We may wish to explicitly order them as a result.","commit_id":"345941b83cd712f699caf5386b3ae4ed9549dbdf"},{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"9bc4245d47b0e3b3d29a869e2252bc2fb7d783a9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"3628e9c0_22517cce","in_reply_to":"4fec9cf9_6f1e9155","updated":"2023-08-17 22:41:31.000000000","message":"I thought about that, but I think it\u0027s better to keep them separate; I can quickly update whichever doesn\u0027t merge first.","commit_id":"345941b83cd712f699caf5386b3ae4ed9549dbdf"}],"doc/source/configuration.rst":[{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"17ae7c822c04c45fc022d78ebfd7763f3cbed731","unresolved":false,"context_lines":[{"line_number":675,"context_line":"      :default: False"},{"line_number":676,"context_line":""},{"line_number":677,"context_line":"      Keep stdout/stderr of command and shell tasks separate (the Ansible"},{"line_number":678,"context_line":"      default behavior) instead of merging stdout and stderr."},{"line_number":679,"context_line":""},{"line_number":680,"context_line":"   .. attr:: disk_limit_per_job"},{"line_number":681,"context_line":"      :default: 250"}],"source_content_type":"text/x-rst","patch_set":11,"id":"bdb5146c_a7311ff1","line":678,"updated":"2023-07-10 21:32:13.000000000","message":"I don\u0027t think it\u0027s reasonable to expect people to write playbooks that have to accomodate both configurations, and I think it\u0027s important for playbook/role reuse to have consistent behavior here.  So if we do this, I think we need to plan to switch the default.  Essentially decide that visible synchronization is worth less than split output.  I agree with that and am in favor of doing so.\n\nTherefore, I think in the docs we should mention that in the next major revision (9, currently), the default will change, and in the next major revision after that (10) the old behavior will be removed.","commit_id":"0cdd97cc742e12b335da436bc49a7a5b8401c98a"}],"tests/fixtures/config/job-output/git/common-config/playbooks/job-output.yaml":[{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"37d15ae8ed247619f4086c901b457d82ef91b0db","unresolved":true,"context_lines":[{"line_number":5,"context_line":"  tasks:"},{"line_number":6,"context_line":"    - shell: |"},{"line_number":7,"context_line":"        echo \"Standard output test {{ zuul.executor.src_root }}\""},{"line_number":8,"context_line":"        \u003e\u00262 echo \"Standard error test {{ zuul.executor.src_root }}\""},{"line_number":9,"context_line":"      notify: handler"},{"line_number":10,"context_line":"    - shell: echo \"This should be skipped\""},{"line_number":11,"context_line":"      when: false"}],"source_content_type":"text/x-yaml","patch_set":16,"id":"2473b50b_b58fe8bc","line":8,"range":{"start_line":8,"start_character":8,"end_line":8,"end_character":11},"updated":"2023-08-17 21:40:05.000000000","message":"I didn\u0027t realize you could prepend commands with this redirection. Neat.","commit_id":"345941b83cd712f699caf5386b3ae4ed9549dbdf"},{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"51eba99cc18912305f46c1d37b0ee6a965ff95fd","unresolved":false,"context_lines":[{"line_number":5,"context_line":"  tasks:"},{"line_number":6,"context_line":"    - shell: |"},{"line_number":7,"context_line":"        echo \"Standard output test {{ zuul.executor.src_root }}\""},{"line_number":8,"context_line":"        \u003e\u00262 echo \"Standard error test {{ zuul.executor.src_root }}\""},{"line_number":9,"context_line":"      notify: handler"},{"line_number":10,"context_line":"    - shell: echo \"This should be skipped\""},{"line_number":11,"context_line":"      when: false"}],"source_content_type":"text/x-yaml","patch_set":16,"id":"2616f52a_3f54103f","line":8,"range":{"start_line":8,"start_character":8,"end_line":8,"end_character":11},"in_reply_to":"2473b50b_b58fe8bc","updated":"2023-08-17 23:52:44.000000000","message":"Done","commit_id":"345941b83cd712f699caf5386b3ae4ed9549dbdf"}],"tests/unit/test_v3.py":[{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"37d15ae8ed247619f4086c901b457d82ef91b0db","unresolved":true,"context_lines":[{"line_number":7426,"context_line":"        # Verify that command standard output appears in the job output,"},{"line_number":7427,"context_line":"        # and that failures in the final playbook get logged."},{"line_number":7428,"context_line":""},{"line_number":7429,"context_line":"        # This currently only verifies we receive output from"},{"line_number":7430,"context_line":"        # localhost.  Notably, it does not verify we receive output"},{"line_number":7431,"context_line":"        # via zuul_console streaming."},{"line_number":7432,"context_line":"        self.executor_server.keep_jobdir \u003d True"}],"source_content_type":"text/x-python","patch_set":16,"id":"e2f4a34a_39356cf9","line":7429,"updated":"2023-08-17 21:40:05.000000000","message":"Should the zuul stream functional playbook test be updated to split the stream too for at least one case?","commit_id":"345941b83cd712f699caf5386b3ae4ed9549dbdf"},{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"9bc4245d47b0e3b3d29a869e2252bc2fb7d783a9","unresolved":false,"context_lines":[{"line_number":7426,"context_line":"        # Verify that command standard output appears in the job output,"},{"line_number":7427,"context_line":"        # and that failures in the final playbook get logged."},{"line_number":7428,"context_line":""},{"line_number":7429,"context_line":"        # This currently only verifies we receive output from"},{"line_number":7430,"context_line":"        # localhost.  Notably, it does not verify we receive output"},{"line_number":7431,"context_line":"        # via zuul_console streaming."},{"line_number":7432,"context_line":"        self.executor_server.keep_jobdir \u003d True"}],"source_content_type":"text/x-python","patch_set":16,"id":"742e0c95_88fb295f","line":7429,"in_reply_to":"e2f4a34a_39356cf9","updated":"2023-08-17 22:41:31.000000000","message":"Seems reasonable.","commit_id":"345941b83cd712f699caf5386b3ae4ed9549dbdf"},{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"37d15ae8ed247619f4086c901b457d82ef91b0db","unresolved":true,"context_lines":[{"line_number":7535,"context_line":"                 result\u003d\u0027POST_FAILURE\u0027, changes\u003d\u00271,1\u0027),"},{"line_number":7536,"context_line":"        ], ordered\u003dFalse)"},{"line_number":7537,"context_line":""},{"line_number":7538,"context_line":"        token \u003d \u0027Standard output test %s\u0027 % (self.history[0].jobdir.src_root)"},{"line_number":7539,"context_line":"        j \u003d json.loads(self._get_file(self.history[0],"},{"line_number":7540,"context_line":"                                      \u0027work/logs/job-output.json\u0027))"},{"line_number":7541,"context_line":"        self.assertEqual(token,"}],"source_content_type":"text/x-python","patch_set":16,"id":"13c9c728_151af1f2","line":7538,"updated":"2023-08-17 21:40:05.000000000","message":"Nit token_stdout appears to define this same value below. We could combine them.","commit_id":"345941b83cd712f699caf5386b3ae4ed9549dbdf"},{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"9bc4245d47b0e3b3d29a869e2252bc2fb7d783a9","unresolved":false,"context_lines":[{"line_number":7535,"context_line":"                 result\u003d\u0027POST_FAILURE\u0027, changes\u003d\u00271,1\u0027),"},{"line_number":7536,"context_line":"        ], ordered\u003dFalse)"},{"line_number":7537,"context_line":""},{"line_number":7538,"context_line":"        token \u003d \u0027Standard output test %s\u0027 % (self.history[0].jobdir.src_root)"},{"line_number":7539,"context_line":"        j \u003d json.loads(self._get_file(self.history[0],"},{"line_number":7540,"context_line":"                                      \u0027work/logs/job-output.json\u0027))"},{"line_number":7541,"context_line":"        self.assertEqual(token,"}],"source_content_type":"text/x-python","patch_set":16,"id":"9075e1ba_62537d33","line":7538,"in_reply_to":"13c9c728_151af1f2","updated":"2023-08-17 22:41:31.000000000","message":"Ack","commit_id":"345941b83cd712f699caf5386b3ae4ed9549dbdf"},{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"e92ecc9f1cdb9e5d8ab929bb49fc03611b38f06c","unresolved":false,"context_lines":[{"line_number":7535,"context_line":"                 result\u003d\u0027POST_FAILURE\u0027, changes\u003d\u00271,1\u0027),"},{"line_number":7536,"context_line":"        ], ordered\u003dFalse)"},{"line_number":7537,"context_line":""},{"line_number":7538,"context_line":"        token \u003d \u0027Standard output test %s\u0027 % (self.history[0].jobdir.src_root)"},{"line_number":7539,"context_line":"        j \u003d json.loads(self._get_file(self.history[0],"},{"line_number":7540,"context_line":"                                      \u0027work/logs/job-output.json\u0027))"},{"line_number":7541,"context_line":"        self.assertEqual(token,"}],"source_content_type":"text/x-python","patch_set":16,"id":"afaff076_f132c292","line":7538,"in_reply_to":"13c9c728_151af1f2","updated":"2023-08-18 00:46:55.000000000","message":"Actually this is entirely rendundant with line 7554 so we can drop it.","commit_id":"345941b83cd712f699caf5386b3ae4ed9549dbdf"}],"zuul/ansible/base/action/command.py":[{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"37d15ae8ed247619f4086c901b457d82ef91b0db","unresolved":true,"context_lines":[{"line_number":54,"context_line":"                self._task.args[\u0027zuul_log_id\u0027] \u003d \"%s-%s-%s\" % ("},{"line_number":55,"context_line":"                    self._task._uuid, count, log_host)"},{"line_number":56,"context_line":"            self._task.args[\"zuul_ansible_split_streams\"] \u003d ("},{"line_number":57,"context_line":"                os.environ[\"ZUUL_ANSIBLE_SPLIT_STREAMS\"] \u003d\u003d \"True\")"},{"line_number":58,"context_line":"        return super(ActionModule, self).run(tmp, task_vars)"}],"source_content_type":"text/x-python","patch_set":16,"id":"86d23064_119b58b1","line":57,"updated":"2023-08-17 21:40:05.000000000","message":"Does this need to be a .get() against the environment to avoid keyerrors in the case that we have installed a new zuul but not restarted onto it yet? I think this is a non issue for container deployments but non container might run into this.","commit_id":"345941b83cd712f699caf5386b3ae4ed9549dbdf"},{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"51eba99cc18912305f46c1d37b0ee6a965ff95fd","unresolved":false,"context_lines":[{"line_number":54,"context_line":"                self._task.args[\u0027zuul_log_id\u0027] \u003d \"%s-%s-%s\" % ("},{"line_number":55,"context_line":"                    self._task._uuid, count, log_host)"},{"line_number":56,"context_line":"            self._task.args[\"zuul_ansible_split_streams\"] \u003d ("},{"line_number":57,"context_line":"                os.environ[\"ZUUL_ANSIBLE_SPLIT_STREAMS\"] \u003d\u003d \"True\")"},{"line_number":58,"context_line":"        return super(ActionModule, self).run(tmp, task_vars)"}],"source_content_type":"text/x-python","patch_set":16,"id":"b35911d2_c284776a","line":57,"in_reply_to":"55022b32_3c32c3e5","updated":"2023-08-17 23:52:44.000000000","message":"I think its fine since we know the majority of deployments are using containers. I did want to call it out as a risk though.","commit_id":"345941b83cd712f699caf5386b3ae4ed9549dbdf"},{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"9bc4245d47b0e3b3d29a869e2252bc2fb7d783a9","unresolved":true,"context_lines":[{"line_number":54,"context_line":"                self._task.args[\u0027zuul_log_id\u0027] \u003d \"%s-%s-%s\" % ("},{"line_number":55,"context_line":"                    self._task._uuid, count, log_host)"},{"line_number":56,"context_line":"            self._task.args[\"zuul_ansible_split_streams\"] \u003d ("},{"line_number":57,"context_line":"                os.environ[\"ZUUL_ANSIBLE_SPLIT_STREAMS\"] \u003d\u003d \"True\")"},{"line_number":58,"context_line":"        return super(ActionModule, self).run(tmp, task_vars)"}],"source_content_type":"text/x-python","patch_set":16,"id":"55022b32_3c32c3e5","line":57,"in_reply_to":"86d23064_119b58b1","updated":"2023-08-17 22:41:31.000000000","message":"Considering all the ansible stuff that could change, I think that\u0027s a pretty bad deployment strategy at this point.  I don\u0027t think we should bend over backwards for it.  Adding a .get does sacrifice some code safety for it, and I\u0027d rather not.  But I can do so if you think it\u0027s important.","commit_id":"345941b83cd712f699caf5386b3ae4ed9549dbdf"}],"zuul/ansible/base/callback/zuul_stream.py":[{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"37d15ae8ed247619f4086c901b457d82ef91b0db","unresolved":true,"context_lines":[{"line_number":90,"context_line":"        result.pop(key, None)"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"    # Combine stdout / stderr"},{"line_number":93,"context_line":"    return stdout_lines + stderr_lines"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"class CallbackModule(default.CallbackModule):"}],"source_content_type":"text/x-python","patch_set":16,"id":"eeb9908d_68d4da85","line":93,"updated":"2023-08-17 21:40:05.000000000","message":"This is my biggest concern. We will always get stderr lines after stdout lines even if they would come before or be mixed otherwise. This potentially makes debugging difficult. I think it would lead me personally to avoid using stderr in some situations which is unfortunate since stderr should make debugging easier not harder...","commit_id":"345941b83cd712f699caf5386b3ae4ed9549dbdf"},{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"51eba99cc18912305f46c1d37b0ee6a965ff95fd","unresolved":false,"context_lines":[{"line_number":90,"context_line":"        result.pop(key, None)"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"    # Combine stdout / stderr"},{"line_number":93,"context_line":"    return stdout_lines + stderr_lines"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"class CallbackModule(default.CallbackModule):"}],"source_content_type":"text/x-python","patch_set":16,"id":"1d3ae48b_f04a8edd","line":93,"in_reply_to":"455accbd_e1be00af","updated":"2023-08-17 23:52:44.000000000","message":"I\u0027m willing to try it. I totally understand why people are wanting this and I can come up with workarounds for debugging when necessary.","commit_id":"345941b83cd712f699caf5386b3ae4ed9549dbdf"},{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"9bc4245d47b0e3b3d29a869e2252bc2fb7d783a9","unresolved":true,"context_lines":[{"line_number":90,"context_line":"        result.pop(key, None)"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"    # Combine stdout / stderr"},{"line_number":93,"context_line":"    return stdout_lines + stderr_lines"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"class CallbackModule(default.CallbackModule):"}],"source_content_type":"text/x-python","patch_set":16,"id":"455accbd_e1be00af","line":93,"in_reply_to":"eeb9908d_68d4da85","updated":"2023-08-17 22:41:31.000000000","message":"Keep in mind that this is only true for the occasions where we can\u0027t stream -- localhost and looped items.  Normal command tasks will have output interleaved (but still not exactly the same way as a terminal would).\n\nBut yes, this is the crux of the matter -- whether the Ansible interface is more important than emulating a terminal.","commit_id":"345941b83cd712f699caf5386b3ae4ed9549dbdf"}],"zuul/ansible/base/library/command.py":[{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"37d15ae8ed247619f4086c901b457d82ef91b0db","unresolved":true,"context_lines":[{"line_number":305,"context_line":"        rselect \u003d list(s for s in (stdout, stderr) if s is not None)"},{"line_number":306,"context_line":"        while True:"},{"line_number":307,"context_line":"            if not rselect:"},{"line_number":308,"context_line":"                break"},{"line_number":309,"context_line":"            rready, _, __ \u003d select.select(rselect, [], [])"},{"line_number":310,"context_line":"            for fd in rready:"},{"line_number":311,"context_line":"                line \u003d fd.readline()"}],"source_content_type":"text/x-python","patch_set":16,"id":"923bebcd_8a8832d4","line":308,"updated":"2023-08-17 21:40:05.000000000","message":"Nit this might be more succinct as `while rselect:`","commit_id":"345941b83cd712f699caf5386b3ae4ed9549dbdf"},{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"37d15ae8ed247619f4086c901b457d82ef91b0db","unresolved":true,"context_lines":[{"line_number":520,"context_line":"        if self.no_log:"},{"line_number":521,"context_line":"            t \u003d None"},{"line_number":522,"context_line":"        else:"},{"line_number":523,"context_line":"            t \u003d threading.Thread(target\u003dfollow, args\u003d(cmd.stdout, cmd.stderr, zuul_log_id))"},{"line_number":524,"context_line":"            t.daemon \u003d True"},{"line_number":525,"context_line":"            t.start()"},{"line_number":526,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"cdd8fc3f_818c48da","line":523,"range":{"start_line":523,"start_character":66,"end_line":523,"end_character":76},"updated":"2023-08-17 21:40:05.000000000","message":"This Popen object attribute is automatically None if PIPE was not set for stderr. This then causes follow() to ignore the stream.","commit_id":"345941b83cd712f699caf5386b3ae4ed9549dbdf"}],"zuul/configloader.py":[{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"37d15ae8ed247619f4086c901b457d82ef91b0db","unresolved":true,"context_lines":[{"line_number":958,"context_line":"                raise Exception(\"Once set, the post-review attribute \""},{"line_number":959,"context_line":"                                \"may not be unset\")"},{"line_number":960,"context_line":""},{"line_number":961,"context_line":"        job.ansible_split_streams \u003d conf.get(\u0027ansible-split-streams\u0027)"},{"line_number":962,"context_line":""},{"line_number":963,"context_line":"        # Configure and validate ansible version"},{"line_number":964,"context_line":"        if \u0027ansible-version\u0027 in conf:"}],"source_content_type":"text/x-python","patch_set":16,"id":"43e3074e_d9dde166","line":961,"updated":"2023-08-17 21:40:05.000000000","message":"Should we default to False here and then we can drop the if this is None set to False check in the next file?\n\nOr have we been a bit more explicit here because the long term plan is to split the streams for all jobs by default?","commit_id":"345941b83cd712f699caf5386b3ae4ed9549dbdf"},{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"9bc4245d47b0e3b3d29a869e2252bc2fb7d783a9","unresolved":false,"context_lines":[{"line_number":958,"context_line":"                raise Exception(\"Once set, the post-review attribute \""},{"line_number":959,"context_line":"                                \"may not be unset\")"},{"line_number":960,"context_line":""},{"line_number":961,"context_line":"        job.ansible_split_streams \u003d conf.get(\u0027ansible-split-streams\u0027)"},{"line_number":962,"context_line":""},{"line_number":963,"context_line":"        # Configure and validate ansible version"},{"line_number":964,"context_line":"        if \u0027ansible-version\u0027 in conf:"}],"source_content_type":"text/x-python","patch_set":16,"id":"f80375f1_93a37e73","line":961,"in_reply_to":"43e3074e_d9dde166","updated":"2023-08-17 22:41:31.000000000","message":"This goes to the mechanics of job inheritance.  We set None here to express no preference; otherwise we could end up with a lot of unpredictable flapping as we applied variants.","commit_id":"345941b83cd712f699caf5386b3ae4ed9549dbdf"}],"zuul/executor/server.py":[{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"37d15ae8ed247619f4086c901b457d82ef91b0db","unresolved":true,"context_lines":[{"line_number":983,"context_line":"        # Record ansible version being used for the cleanup phase"},{"line_number":984,"context_line":"        self.ansible_version \u003d self.job.ansible_version"},{"line_number":985,"context_line":"        self.ansible_split_streams \u003d self.job.ansible_split_streams"},{"line_number":986,"context_line":"        if self.ansible_split_streams is None:"},{"line_number":987,"context_line":"            self.ansible_split_streams \u003d False"},{"line_number":988,"context_line":"        # TODO(corvus): Remove default setting after 4.3.0; this is to handle"},{"line_number":989,"context_line":"        # scheduler/executor version skew."}],"source_content_type":"text/x-python","patch_set":16,"id":"8f09d755_0c078aee","line":986,"updated":"2023-08-17 21:40:05.000000000","message":"This is the check I\u0027m talking about in the previous file.","commit_id":"345941b83cd712f699caf5386b3ae4ed9549dbdf"},{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"9bc4245d47b0e3b3d29a869e2252bc2fb7d783a9","unresolved":false,"context_lines":[{"line_number":983,"context_line":"        # Record ansible version being used for the cleanup phase"},{"line_number":984,"context_line":"        self.ansible_version \u003d self.job.ansible_version"},{"line_number":985,"context_line":"        self.ansible_split_streams \u003d self.job.ansible_split_streams"},{"line_number":986,"context_line":"        if self.ansible_split_streams is None:"},{"line_number":987,"context_line":"            self.ansible_split_streams \u003d False"},{"line_number":988,"context_line":"        # TODO(corvus): Remove default setting after 4.3.0; this is to handle"},{"line_number":989,"context_line":"        # scheduler/executor version skew."}],"source_content_type":"text/x-python","patch_set":16,"id":"54344e50_b9d0793b","line":986,"in_reply_to":"8f09d755_0c078aee","updated":"2023-08-17 22:41:31.000000000","message":"As described earlier, we can\u0027t set the default in the configloader, but an alternative would be to do so in job freezing.  But I think this is easier.","commit_id":"345941b83cd712f699caf5386b3ae4ed9549dbdf"}]}
