)]}'
{"/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":"3e128202fa61b831e26cce8253fe6290b63853d8","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":1,"id":"585ecbda_ed71bbba","updated":"2026-04-16 21:35:00.000000000","message":"After reading through this, we need to either:\n\n- Somehow make this use SERVICE* states\n- Introduce a new state to mean \"re-inspecting and returning to active\"\n\nas presented here, it would be extremely difficult for an operator to tell, via our nodes api, what the next provision state is once inspection completes -- with other things that operate on active nodes, like node servicing or rescuing, we have unique states which help communicate to the operator what\u0027s going on.","commit_id":"6bd42a87e17c103d2b95f57e835e391caf41c691"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"0db25f7a93120790e81ff76db0c5ed6bc8ea04d2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"e204a4dc_56cc4fd9","updated":"2026-04-16 16:18:31.000000000","message":"I like the idea, some comments on the implementation inline","commit_id":"6bd42a87e17c103d2b95f57e835e391caf41c691"},{"author":{"_account_id":5890,"name":"Doug Goldstein","email":"cardoe@cardoe.com","username":"cardoe"},"change_message_id":"78813b4bef500f22ec60c027fee49d765954d082","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"c3b529f4_1402b9fa","in_reply_to":"585ecbda_ed71bbba","updated":"2026-07-09 02:22:46.000000000","message":"Completely redid this as steps","commit_id":"6bd42a87e17c103d2b95f57e835e391caf41c691"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"edadd523f582b1f271e8c438b0f0ce8babb0c886","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"0363cef8_c3913934","updated":"2026-07-21 15:15:24.000000000","message":"Group review during a meetup of ironic-cores. Overall looks good, a little follow-up might be good.","commit_id":"8f2168383506890aec4e25d24375c4d296d1d94b"}],"specs/approved/inspection-interface-oob-states.rst":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"0db25f7a93120790e81ff76db0c5ed6bc8ea04d2","unresolved":true,"context_lines":[{"line_number":57,"context_line":""},{"line_number":58,"context_line":"       class InspectInterface(BaseInterface):"},{"line_number":59,"context_line":"           ..."},{"line_number":60,"context_line":"           def is_oob(self):"},{"line_number":61,"context_line":"               \"\"\"Return True if this implementation is out-of-band."},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"               OOB implementations communicate with the BMC or management"}],"source_content_type":"text/x-rst","patch_set":1,"id":"22201d78_421ac9ff","line":60,"updated":"2026-04-16 16:18:31.000000000","message":"In my experience, oob is not clear for people outside of our bubble. I\u0027d change it to requires_ramdisk, which has prior art in Ironic","commit_id":"6bd42a87e17c103d2b95f57e835e391caf41c691"},{"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":"3e128202fa61b831e26cce8253fe6290b63853d8","unresolved":true,"context_lines":[{"line_number":57,"context_line":""},{"line_number":58,"context_line":"       class InspectInterface(BaseInterface):"},{"line_number":59,"context_line":"           ..."},{"line_number":60,"context_line":"           def is_oob(self):"},{"line_number":61,"context_line":"               \"\"\"Return True if this implementation is out-of-band."},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"               OOB implementations communicate with the BMC or management"}],"source_content_type":"text/x-rst","patch_set":1,"id":"b343bb4c_043e0c9f","line":60,"in_reply_to":"22201d78_421ac9ff","updated":"2026-04-16 21:35:00.000000000","message":"++","commit_id":"6bd42a87e17c103d2b95f57e835e391caf41c691"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"0db25f7a93120790e81ff76db0c5ed6bc8ea04d2","unresolved":true,"context_lines":[{"line_number":97,"context_line":"   started from ``available``, ``active``, or ``rescue``,"},{"line_number":98,"context_line":"   the node is returned to its prior state and ``last_error`` is populated"},{"line_number":99,"context_line":"   with the failure reason."},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"Alternatives"},{"line_number":102,"context_line":"------------"},{"line_number":103,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"202b4a47_f36a5174","line":100,"updated":"2026-04-16 16:18:31.000000000","message":"Curious: are we going to create/update ports by default? It can disrupt the instance quite a bit (imagine the NIC used to attach a VIF get swapped with a different MAC)","commit_id":"6bd42a87e17c103d2b95f57e835e391caf41c691"},{"author":{"_account_id":5890,"name":"Doug Goldstein","email":"cardoe@cardoe.com","username":"cardoe"},"change_message_id":"78813b4bef500f22ec60c027fee49d765954d082","unresolved":false,"context_lines":[{"line_number":97,"context_line":"   started from ``available``, ``active``, or ``rescue``,"},{"line_number":98,"context_line":"   the node is returned to its prior state and ``last_error`` is populated"},{"line_number":99,"context_line":"   with the failure reason."},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"Alternatives"},{"line_number":102,"context_line":"------------"},{"line_number":103,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"fc884bbd_ff60f1cb","line":100,"in_reply_to":"202b4a47_f36a5174","updated":"2026-07-09 02:22:46.000000000","message":"It will now just be a servicing step.","commit_id":"6bd42a87e17c103d2b95f57e835e391caf41c691"},{"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":"3e128202fa61b831e26cce8253fe6290b63853d8","unresolved":true,"context_lines":[{"line_number":109,"context_line":"  target (e.g. ``inspect_oob``) could be introduced to distinguish the"},{"line_number":110,"context_line":"  extended paths from the standard ``inspect`` target.  Rejected in favour"},{"line_number":111,"context_line":"  of reusing the existing ``inspect`` target with a microversion guard, which"},{"line_number":112,"context_line":"  is consistent with how Ironic has evolved other state-machine extensions."},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"Data model impact"},{"line_number":115,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"2ce9e507_25ff1ef5","line":112,"updated":"2026-04-16 21:35:00.000000000","message":"I do think that unless we do something like this -- or maybe even consider this a form of servicing, somehow (with servicing states) -- we\u0027re going to need code changes in Nova\u0027s virt driver and we run the risk of breaking downstream integrations.","commit_id":"6bd42a87e17c103d2b95f57e835e391caf41c691"},{"author":{"_account_id":5890,"name":"Doug Goldstein","email":"cardoe@cardoe.com","username":"cardoe"},"change_message_id":"78813b4bef500f22ec60c027fee49d765954d082","unresolved":false,"context_lines":[{"line_number":109,"context_line":"  target (e.g. ``inspect_oob``) could be introduced to distinguish the"},{"line_number":110,"context_line":"  extended paths from the standard ``inspect`` target.  Rejected in favour"},{"line_number":111,"context_line":"  of reusing the existing ``inspect`` target with a microversion guard, which"},{"line_number":112,"context_line":"  is consistent with how Ironic has evolved other state-machine extensions."},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"Data model impact"},{"line_number":115,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"e5c04925_234dcb9a","line":112,"in_reply_to":"2ce9e507_25ff1ef5","updated":"2026-07-09 02:22:46.000000000","message":"Done","commit_id":"6bd42a87e17c103d2b95f57e835e391caf41c691"},{"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":"3e128202fa61b831e26cce8253fe6290b63853d8","unresolved":true,"context_lines":[{"line_number":115,"context_line":"-----------------"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"None.  The existing ``target_provision_state`` column on the ``nodes`` table"},{"line_number":118,"context_line":"is sufficient to track the return state during inspection."},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"State Machine Impact"},{"line_number":121,"context_line":"--------------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"10d273d3_e1cbcee3","line":118,"updated":"2026-04-16 21:35:00.000000000","message":"How does an API user determine that a node currently undergoing inspection will return to ACTIVE? Unlike other mixed active/not-active workflows, this uses the same state verbs and will not fully communicate status via our API.","commit_id":"6bd42a87e17c103d2b95f57e835e391caf41c691"},{"author":{"_account_id":5890,"name":"Doug Goldstein","email":"cardoe@cardoe.com","username":"cardoe"},"change_message_id":"78813b4bef500f22ec60c027fee49d765954d082","unresolved":false,"context_lines":[{"line_number":115,"context_line":"-----------------"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"None.  The existing ``target_provision_state`` column on the ``nodes`` table"},{"line_number":118,"context_line":"is sufficient to track the return state during inspection."},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"State Machine Impact"},{"line_number":121,"context_line":"--------------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"2c96ca4c_59e08e01","line":118,"in_reply_to":"10d273d3_e1cbcee3","updated":"2026-07-09 02:22:46.000000000","message":"Done","commit_id":"6bd42a87e17c103d2b95f57e835e391caf41c691"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"0db25f7a93120790e81ff76db0c5ed6bc8ea04d2","unresolved":true,"context_lines":[{"line_number":139,"context_line":"    inspecting --[done]--\u003e deploy failed  (when target \u003d\u003d deploy failed)"},{"line_number":140,"context_line":"    inspecting --[done]--\u003e rescue         (when target \u003d\u003d rescue)"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"New ``fail`` event transitions (return to originating state on error)::"},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"    inspecting --[fail]--\u003e available      (when target \u003d\u003d available)"},{"line_number":145,"context_line":"    inspecting --[fail]--\u003e active         (when target \u003d\u003d active)"}],"source_content_type":"text/x-rst","patch_set":1,"id":"33f722ed_55add716","line":142,"updated":"2026-04-16 16:18:31.000000000","message":"I really don\u0027t like this part. How will users detect a failure, given that last_error can easily be overridden by something else?","commit_id":"6bd42a87e17c103d2b95f57e835e391caf41c691"},{"author":{"_account_id":5890,"name":"Doug Goldstein","email":"cardoe@cardoe.com","username":"cardoe"},"change_message_id":"78813b4bef500f22ec60c027fee49d765954d082","unresolved":false,"context_lines":[{"line_number":139,"context_line":"    inspecting --[done]--\u003e deploy failed  (when target \u003d\u003d deploy failed)"},{"line_number":140,"context_line":"    inspecting --[done]--\u003e rescue         (when target \u003d\u003d rescue)"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"New ``fail`` event transitions (return to originating state on error)::"},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"    inspecting --[fail]--\u003e available      (when target \u003d\u003d available)"},{"line_number":145,"context_line":"    inspecting --[fail]--\u003e active         (when target \u003d\u003d active)"}],"source_content_type":"text/x-rst","patch_set":1,"id":"80ffb14f_b04647ee","line":142,"in_reply_to":"33f722ed_55add716","updated":"2026-07-09 02:22:46.000000000","message":"It will now have the same failure surface as servicing steps.","commit_id":"6bd42a87e17c103d2b95f57e835e391caf41c691"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"0db25f7a93120790e81ff76db0c5ed6bc8ea04d2","unresolved":true,"context_lines":[{"line_number":173,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"No new commands are needed.  The existing"},{"line_number":176,"context_line":"``openstack baremetal node manage --inspect`` (or equivalent ``provision``"},{"line_number":177,"context_line":"subcommand) will work transparently from the newly permitted states once"},{"line_number":178,"context_line":"the client negotiates the new microversion."},{"line_number":179,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"84288771_af332106","line":176,"updated":"2026-04-16 16:18:31.000000000","message":"nit: `baremetal node inspect`","commit_id":"6bd42a87e17c103d2b95f57e835e391caf41c691"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"0db25f7a93120790e81ff76db0c5ed6bc8ea04d2","unresolved":true,"context_lines":[{"line_number":197,"context_line":"Nova driver impact"},{"line_number":198,"context_line":"------------------"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"None."},{"line_number":201,"context_line":""},{"line_number":202,"context_line":"Ramdisk impact"},{"line_number":203,"context_line":"--------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"60726baa_91fe51f8","line":200,"updated":"2026-04-16 16:18:31.000000000","message":"You sure? The driver may freak out if an active instance moves to an unexpected state.","commit_id":"6bd42a87e17c103d2b95f57e835e391caf41c691"},{"author":{"_account_id":5890,"name":"Doug Goldstein","email":"cardoe@cardoe.com","username":"cardoe"},"change_message_id":"78813b4bef500f22ec60c027fee49d765954d082","unresolved":false,"context_lines":[{"line_number":197,"context_line":"Nova driver impact"},{"line_number":198,"context_line":"------------------"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"None."},{"line_number":201,"context_line":""},{"line_number":202,"context_line":"Ramdisk impact"},{"line_number":203,"context_line":"--------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"bfdb46c7_ca0ce6b9","line":200,"in_reply_to":"0c7e4ba1_02b039a8","updated":"2026-07-09 02:22:46.000000000","message":"Done","commit_id":"6bd42a87e17c103d2b95f57e835e391caf41c691"},{"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":"a0ab45f7d3a710cd48102170523f206ff0b0f41e","unresolved":true,"context_lines":[{"line_number":197,"context_line":"Nova driver impact"},{"line_number":198,"context_line":"------------------"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"None."},{"line_number":201,"context_line":""},{"line_number":202,"context_line":"Ramdisk impact"},{"line_number":203,"context_line":"--------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"0c7e4ba1_02b039a8","line":200,"in_reply_to":"60726baa_91fe51f8","updated":"2026-04-16 20:22:50.000000000","message":"https://opendev.org/openstack/nova/src/commit/e337c61a87155676105919d0ed6d7090c89365cc/nova/virt/ironic/ironic_states.py#L247\n\nYou will likely need changes, or at a minimum, test to validate no change in behavior. If it breaks nova driver, we may have some obligation to ensure it doesn\u0027t when used with an older microversion (as nova\u0027s driver stickies to a microversion, this would prevent breakage on upgrade).","commit_id":"6bd42a87e17c103d2b95f57e835e391caf41c691"}],"specs/approved/inspection-steps.rst":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"1f8462c36a8ada3066ff0391eb4d4703630b40e3","unresolved":false,"context_lines":[{"line_number":83,"context_line":"Arguments:"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"* ``data_handling`` — how newly collected inspection data (inventory and"},{"line_number":86,"context_line":"  plugin data) interacts with previously stored inspection data.  One of:"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"  - ``replace`` (default): the new data replaces the stored data.  This"},{"line_number":89,"context_line":"    matches the behaviour of inspection today."}],"source_content_type":"text/x-rst","patch_set":2,"id":"17c0e21f_e9aef1a0","line":86,"updated":"2026-07-21 13:45:43.000000000","message":"nit: could be a boolean like \"merge_data\"","commit_id":"8f2168383506890aec4e25d24375c4d296d1d94b"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"edadd523f582b1f271e8c438b0f0ce8babb0c886","unresolved":true,"context_lines":[{"line_number":96,"context_line":""},{"line_number":97,"context_line":"* ``update_properties`` — boolean, default ``true``.  When ``false``, the"},{"line_number":98,"context_line":"  step stores inspection data but does not modify scheduling-related"},{"line_number":99,"context_line":"  ``node.properties`` (``memory_mb``, ``cpus``, ``local_gb``,"},{"line_number":100,"context_line":"  ``capabilities``…).  This lets operators refresh inventory on ``active``"},{"line_number":101,"context_line":"  nodes without perturbing resource-tracking data mid-lifecycle."},{"line_number":102,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"4d8db5f6_92e4fa00","line":99,"range":{"start_line":99,"start_character":23,"end_line":99,"end_character":60},"updated":"2026-07-21 15:15:24.000000000","message":"These are historical fields, which have turned operational informational for our users. We likely need to explicitly *break* this at some point or evolve it, but its outside of the scope of this spec.","commit_id":"8f2168383506890aec4e25d24375c4d296d1d94b"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"edadd523f582b1f271e8c438b0f0ce8babb0c886","unresolved":true,"context_lines":[{"line_number":98,"context_line":"  step stores inspection data but does not modify scheduling-related"},{"line_number":99,"context_line":"  ``node.properties`` (``memory_mb``, ``cpus``, ``local_gb``,"},{"line_number":100,"context_line":"  ``capabilities``…).  This lets operators refresh inventory on ``active``"},{"line_number":101,"context_line":"  nodes without perturbing resource-tracking data mid-lifecycle."},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"This step is exposed only by OOB-capable inspect interface implementations."},{"line_number":104,"context_line":"The step body is implemented once as a helper on the base"}],"source_content_type":"text/x-rst","patch_set":2,"id":"335bed04_9092c579","line":101,"updated":"2026-07-21 15:15:24.000000000","message":"A good follow-up idea, update the traits based upon conditionals. We can\u0027t really update the resource class when its been deployed, but I think we can update traits.","commit_id":"8f2168383506890aec4e25d24375c4d296d1d94b"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"edadd523f582b1f271e8c438b0f0ce8babb0c886","unresolved":true,"context_lines":[{"line_number":103,"context_line":"This step is exposed only by OOB-capable inspect interface implementations."},{"line_number":104,"context_line":"The step body is implemented once as a helper on the base"},{"line_number":105,"context_line":"``InspectInterface``; ``RedfishInspect`` exposes it with the step decorators"},{"line_number":106,"context_line":"(and ``idrac-redfish`` inherits it).  Other OOB implementations (``ilo``,"},{"line_number":107,"context_line":"``irmc``) and out-of-tree drivers can opt in the same way in follow-up work."},{"line_number":108,"context_line":"In-band implementations such as ``agent`` do not advertise the step, so"},{"line_number":109,"context_line":"there is no runtime state in which it can be selected but not executed."}],"source_content_type":"text/x-rst","patch_set":2,"id":"0e531092_23adadf4","line":106,"updated":"2026-07-21 15:15:24.000000000","message":"?Historical OOB?","commit_id":"8f2168383506890aec4e25d24375c4d296d1d94b"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"1f8462c36a8ada3066ff0391eb4d4703630b40e3","unresolved":false,"context_lines":[{"line_number":168,"context_line":"  ``[conductor]verify_step_priority_override`` option (e.g."},{"line_number":169,"context_line":"  ``inspect.inspect:5``) to get an automatic OOB inventory collection every"},{"line_number":170,"context_line":"  time a node passes through ``verifying`` (``enroll`` → ``manageable``)."},{"line_number":171,"context_line":"  Verify steps take no arguments, so the defaults (``replace``,"},{"line_number":172,"context_line":"  ``update_properties\u003dtrue``) apply."},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"* **Runbooks**: since runbook step validation derives from the same"}],"source_content_type":"text/x-rst","patch_set":2,"id":"dbd5b46a_738dc020","line":171,"updated":"2026-07-21 13:45:43.000000000","message":"Yeah, \"merge\" would be quite odd here","commit_id":"8f2168383506890aec4e25d24375c4d296d1d94b"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"1f8462c36a8ada3066ff0391eb4d4703630b40e3","unresolved":false,"context_lines":[{"line_number":214,"context_line":""},{"line_number":215,"context_line":"* **Do nothing; document the manual workaround.**  Operators can move nodes"},{"line_number":216,"context_line":"  to ``manageable`` themselves.  Rejected because the round-trip through"},{"line_number":217,"context_line":"  cleaning is costly and the restriction is purely artificial for OOB"},{"line_number":218,"context_line":"  drivers."},{"line_number":219,"context_line":""},{"line_number":220,"context_line":"* **A vendor passthru method.**  Rejected: not discoverable, not composable"}],"source_content_type":"text/x-rst","patch_set":2,"id":"e874e0b2_1c4c3e5f","line":217,"updated":"2026-07-21 13:45:43.000000000","message":"I think the main reason is not this, it\u0027s that manageable involves deprovisioning","commit_id":"8f2168383506890aec4e25d24375c4d296d1d94b"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"1f8462c36a8ada3066ff0391eb4d4703630b40e3","unresolved":false,"context_lines":[{"line_number":219,"context_line":""},{"line_number":220,"context_line":"* **A vendor passthru method.**  Rejected: not discoverable, not composable"},{"line_number":221,"context_line":"  with steps or runbooks, and bypasses the step frameworks\u0027 error handling."},{"line_number":222,"context_line":""},{"line_number":223,"context_line":"Data model impact"},{"line_number":224,"context_line":"-----------------"},{"line_number":225,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"f46f6d00_e9a2d63b","line":222,"updated":"2026-07-21 13:45:43.000000000","message":"I think it\u0027s worth mentioning the possibility of deprecating the \"inspect\" verb entirely. Requires in-band support, of course.","commit_id":"8f2168383506890aec4e25d24375c4d296d1d94b"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"1f8462c36a8ada3066ff0391eb4d4703630b40e3","unresolved":false,"context_lines":[{"line_number":272,"context_line":"  to the inherited helper.  Interfaces that do nothing remain exactly as"},{"line_number":273,"context_line":"  they are today."},{"line_number":274,"context_line":"* The previously proposed ``is_oob()`` method is no longer needed and is"},{"line_number":275,"context_line":"  not introduced."},{"line_number":276,"context_line":""},{"line_number":277,"context_line":"Nova driver impact"},{"line_number":278,"context_line":"------------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"977c5f9a_7caef652","line":275,"updated":"2026-07-21 13:45:43.000000000","message":"Tell Claude not to mention intermediate decisions :) (it does it for me as well)","commit_id":"8f2168383506890aec4e25d24375c4d296d1d94b"}]}
