)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"e2b54259066d2fca0614fb2e914876708b06a7c9","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":1,"id":"ca5a6653_bd3e7e97","updated":"2025-12-04 20:11:01.000000000","message":"This needs a huge revision to fit my vision. It should be pushed later today.","commit_id":"fd302bae8dce8294594abe3d94a80b02608ca8c1"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"3eb49fb350bc47bdf2e546cb607426811e6c5ab3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"0999fff0_45de756e","updated":"2025-12-09 12:53:43.000000000","message":"Thanks!","commit_id":"c69caf28e88565fbf5cd2b4ee71ba49fc13738c7"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"ab32795cd2726612f77bc5ac1656d64524fef9a0","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":3,"id":"1579b145_69e68834","updated":"2025-12-11 01:16:00.000000000","message":"recheck NODE_FAILURE","commit_id":"c69caf28e88565fbf5cd2b4ee71ba49fc13738c7"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"7ff1cb9b77518b801347aff7e8ccb9210641b037","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":3,"id":"19445c69_df121627","updated":"2025-12-10 19:50:51.000000000","message":"recheck unknown: failed to copy: httpReadSeeker: failed open: unexpected status from GET request to https://quay.io/v2/metal3-io/keepalived/manifests/sha256:4963c6c06cb8ad76438abe0fa53dd4026f3711c3c15eb304d461e416ccb135e7: 502 Bad Gateway","commit_id":"c69caf28e88565fbf5cd2b4ee71ba49fc13738c7"}],"ironic/api/controllers/v1/node.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"5c2b4d69de4f1fa962f92e85fe48bf74cf5bb9f3","unresolved":false,"context_lines":[{"line_number":47,"context_line":"from ironic.common.i18n import _"},{"line_number":48,"context_line":"from ironic.common import metrics_utils"},{"line_number":49,"context_line":"from ironic.common import policy"},{"line_number":50,"context_line":"from ironic.common import state_machine as sm"},{"line_number":51,"context_line":"from ironic.common import states as ir_states"},{"line_number":52,"context_line":"from ironic.conductor import steps as conductor_steps"},{"line_number":53,"context_line":"import ironic.conf"}],"source_content_type":"text/x-python","patch_set":2,"id":"67e3d9f8_e8956645","line":50,"updated":"2025-12-06 17:31:01.000000000","message":"nit: I\u0027d rather not rename the import, it\u0027s not used often enough to justify it","commit_id":"2f23575c68405278ae2655b94a2238fb3a430241"}],"ironic/api/controllers/v1/utils.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"5c2b4d69de4f1fa962f92e85fe48bf74cf5bb9f3","unresolved":false,"context_lines":[{"line_number":38,"context_line":"from ironic.common import faults"},{"line_number":39,"context_line":"from ironic.common.i18n import _"},{"line_number":40,"context_line":"from ironic.common import policy"},{"line_number":41,"context_line":"from ironic.common import state_machine as sm"},{"line_number":42,"context_line":"from ironic.common import states"},{"line_number":43,"context_line":"from ironic.common import utils"},{"line_number":44,"context_line":"from ironic.conductor import steps as conductor_steps"}],"source_content_type":"text/x-python","patch_set":2,"id":"6c0864e8_b220c6a4","line":41,"updated":"2025-12-06 17:31:01.000000000","message":"same","commit_id":"2f23575c68405278ae2655b94a2238fb3a430241"}],"ironic/common/state_constants.py":[{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"e2bb60336603e0c89a8cfa33a5b9d3096a999aa2","unresolved":true,"context_lines":[{"line_number":10,"context_line":"# License for the specific language governing permissions and limitations"},{"line_number":11,"context_line":"# under the License."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"\"\"\""},{"line_number":14,"context_line":"Constants for bare metal node states."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"This module contains only state constant definitions with no executable code."}],"source_content_type":"text/x-python","patch_set":1,"id":"270ac4d9_81494c7e","line":13,"updated":"2025-12-04 19:41:34.000000000","message":"Jay, I thought you said you were going to put a big comment in here saying \"sync this over to nova\", or are we not there yet?","commit_id":"fd302bae8dce8294594abe3d94a80b02608ca8c1"}],"ironic/common/state_machine.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"5c2b4d69de4f1fa962f92e85fe48bf74cf5bb9f3","unresolved":false,"context_lines":[{"line_number":31,"context_line":"from oslo_log import log as logging"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"from ironic.common import fsm"},{"line_number":34,"context_line":"from ironic.common import states as st"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":37,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"e8a703da_c94298b8","line":34,"updated":"2025-12-06 17:31:01.000000000","message":"Sigh, why? :)","commit_id":"2f23575c68405278ae2655b94a2238fb3a430241"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"111c9988568420cc1da731125e1ff2ac9c17f3fe","unresolved":true,"context_lines":[{"line_number":31,"context_line":"from oslo_log import log as logging"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"from ironic.common import fsm"},{"line_number":34,"context_line":"from ironic.common import states as st"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":37,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"2e22c067_b667ef61","line":34,"in_reply_to":"e8a703da_c94298b8","updated":"2025-12-08 22:08:19.000000000","message":"real talk: I default to this to avoid finding line length issues later on. sm is shorter than states; state_machine is not :D \n\nI will update since it bothers you","commit_id":"2f23575c68405278ae2655b94a2238fb3a430241"}],"ironic/common/states.py":[{"author":{"_account_id":23851,"name":"Riccardo Pittau","email":"elfosardo@gmail.com","username":"elfosardo"},"change_message_id":"4e02a498d89bffeec721ced485d04d6683f8d131","unresolved":true,"context_lines":[{"line_number":32,"context_line":""},{"line_number":33,"context_line":"from ironic.common import fsm"},{"line_number":34,"context_line":"from ironic.common import state_constants as st"},{"line_number":35,"context_line":"# Re-export all constants for backward compatibility"},{"line_number":36,"context_line":"from ironic.common.state_constants import *  # noqa: F401,F403"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"LOG \u003d logging.getLogger(__name__)"}],"source_content_type":"text/x-python","patch_set":1,"id":"f84afbc3_52c0d659","line":35,"updated":"2025-12-04 09:43:05.000000000","message":"not sure I get this, shoudn\u0027t this be re-import ?","commit_id":"fd302bae8dce8294594abe3d94a80b02608ca8c1"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"85ce03613eb47ae935ccad3ace1e2833fced2ce1","unresolved":true,"context_lines":[{"line_number":32,"context_line":""},{"line_number":33,"context_line":"from ironic.common import fsm"},{"line_number":34,"context_line":"from ironic.common import state_constants as st"},{"line_number":35,"context_line":"# Re-export all constants for backward compatibility"},{"line_number":36,"context_line":"from ironic.common.state_constants import *  # noqa: F401,F403"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"LOG \u003d logging.getLogger(__name__)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1667d36d_9aa5a583","line":35,"in_reply_to":"c85919d6_500088a9","updated":"2025-12-04 20:11:34.000000000","message":"I\u0027m removing the backwards compat \"*\" import in favor of something more savory.","commit_id":"fd302bae8dce8294594abe3d94a80b02608ca8c1"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"ab509042ebca07b59fe4f7ec6b6dee81e0c08f83","unresolved":true,"context_lines":[{"line_number":32,"context_line":""},{"line_number":33,"context_line":"from ironic.common import fsm"},{"line_number":34,"context_line":"from ironic.common import state_constants as st"},{"line_number":35,"context_line":"# Re-export all constants for backward compatibility"},{"line_number":36,"context_line":"from ironic.common.state_constants import *  # noqa: F401,F403"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"LOG \u003d logging.getLogger(__name__)"}],"source_content_type":"text/x-python","patch_set":1,"id":"fcfd23b0_c996c17c","line":35,"in_reply_to":"f84afbc3_52c0d659","updated":"2025-12-04 18:21:29.000000000","message":"This is a horrible claude-added comment that I missed in local review. Yikes.","commit_id":"fd302bae8dce8294594abe3d94a80b02608ca8c1"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"9d5406019ab55fd2fe2c0434f9994db0dc5f404d","unresolved":true,"context_lines":[{"line_number":32,"context_line":""},{"line_number":33,"context_line":"from ironic.common import fsm"},{"line_number":34,"context_line":"from ironic.common import state_constants as st"},{"line_number":35,"context_line":"# Re-export all constants for backward compatibility"},{"line_number":36,"context_line":"from ironic.common.state_constants import *  # noqa: F401,F403"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"LOG \u003d logging.getLogger(__name__)"}],"source_content_type":"text/x-python","patch_set":1,"id":"c85919d6_500088a9","line":35,"in_reply_to":"fcfd23b0_c996c17c","updated":"2025-12-04 19:40:46.000000000","message":"I think it is more a \"how does a human or AI parse the text. To me it actually makes sense. *shrug*","commit_id":"fd302bae8dce8294594abe3d94a80b02608ca8c1"}],"ironic/conductor/task_manager.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"5c2b4d69de4f1fa962f92e85fe48bf74cf5bb9f3","unresolved":false,"context_lines":[{"line_number":114,"context_line":"from ironic.common import driver_factory"},{"line_number":115,"context_line":"from ironic.common import exception"},{"line_number":116,"context_line":"from ironic.common.i18n import _"},{"line_number":117,"context_line":"from ironic.common import state_machine as sm"},{"line_number":118,"context_line":"from ironic.common import states"},{"line_number":119,"context_line":"from ironic.conductor import notification_utils as notify"},{"line_number":120,"context_line":"from ironic import objects"}],"source_content_type":"text/x-python","patch_set":2,"id":"8fc17a01_b2c508ea","line":117,"updated":"2025-12-06 17:31:01.000000000","message":"same","commit_id":"2f23575c68405278ae2655b94a2238fb3a430241"}]}
