)]}'
{"/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":"c7c740a597f6ee7f8d279264027c588383df9c85","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":1,"id":"c3ee0ff6_8c8f7f90","updated":"2026-03-04 21:01:22.000000000","message":"Straight from claude; needs self-review and CI run.","commit_id":"3fd49820dbd08d1b443138ce512e908b3acfbba6"},{"author":{"_account_id":5890,"name":"Doug Goldstein","email":"cardoe@cardoe.com","username":"cardoe"},"change_message_id":"593553095e0a0e6f2cc75fad196e26950a1f1987","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":2,"id":"88924677_1b58b8d8","updated":"2026-03-04 22:22:31.000000000","message":"I don’t love the Boolean flag since we have TBN config files that are gonna consume this stuff. Just validate your TBN config offline to make sure it’ll match the right interfaces. It just seems like an extra hurdle for users.","commit_id":"9b8307c3592d4a19e32c8ef11e1d51ac9ec81f81"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"43c9997b7299427453fc8296111dde65e9ca08ca","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"7be9e367_c25b380d","updated":"2026-03-05 19:51:07.000000000","message":"I think we need a test added which verifies the portgroup value is not API editable.","commit_id":"9b8307c3592d4a19e32c8ef11e1d51ac9ec81f81"},{"author":{"_account_id":14228,"name":"Clif Houck","email":"me@clifhouck.com","username":"clif_h"},"change_message_id":"5a6f6d97cab26566127f8f741e4ebd79fbb381dd","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"4469ed11_67776ae8","updated":"2026-03-05 14:40:18.000000000","message":"One nit, but overall looks fine to me.","commit_id":"9b8307c3592d4a19e32c8ef11e1d51ac9ec81f81"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"f958c698fc82180e686c0e8dc9cf27367a4b9252","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":2,"id":"facf19fb_7b9b5af6","in_reply_to":"218c4059_825a1853","updated":"2026-03-05 19:56:17.000000000","message":"Yeah, one of the items we got *deep* into discussion early on was a need to be able to say \"please no, never this port, and that is the purpose of that flag.","commit_id":"9b8307c3592d4a19e32c8ef11e1d51ac9ec81f81"},{"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":"59a3ef6b7e41b5583bffc8215110b74efc7d18e0","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":2,"id":"218c4059_825a1853","in_reply_to":"88924677_1b58b8d8","updated":"2026-03-05 19:37:56.000000000","message":"It\u0027s not clear to me what you\u0027re talking about? This is implementing the fields as described in the spec.","commit_id":"9b8307c3592d4a19e32c8ef11e1d51ac9ec81f81"},{"author":{"_account_id":5890,"name":"Doug Goldstein","email":"cardoe@cardoe.com","username":"cardoe"},"change_message_id":"c932f4b03dded69c6933567c987c069cf2854adc","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"68450b3d_d25e1bc5","in_reply_to":"bb49d24d_7bca4d63","updated":"2026-03-05 22:05:54.000000000","message":"Done","commit_id":"9b8307c3592d4a19e32c8ef11e1d51ac9ec81f81"},{"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":"ad9420ce5146b9d244acde7f2b43eb0874743b87","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":2,"id":"bb49d24d_7bca4d63","in_reply_to":"cd1d7e3a_0cb2a358","updated":"2026-03-05 20:28:05.000000000","message":"After discussion in IRC, we decided to make Port.available_for_dynamic_portgroup non-nullable and defaulting to True. This should make the default, usual case (just work with TBN) the default, and the unusual case (a port that can\u0027t work with TBN) the exceptional case.","commit_id":"9b8307c3592d4a19e32c8ef11e1d51ac9ec81f81"},{"author":{"_account_id":5890,"name":"Doug Goldstein","email":"cardoe@cardoe.com","username":"cardoe"},"change_message_id":"bd5a9cb15c2d36037759696e6ca26fbff0b7f579","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":2,"id":"cd1d7e3a_0cb2a358","in_reply_to":"facf19fb_7b9b5af6","updated":"2026-03-05 20:03:16.000000000","message":"Can I have a config knob to default it to True then? Having to adjust this on every port is gonna be sad panda. My ports are added automatically via inspection.","commit_id":"9b8307c3592d4a19e32c8ef11e1d51ac9ec81f81"},{"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":"922321d372c38dcc4f06ef3c2a9f5af351ea6964","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":6,"id":"25c5e2c3_56b13bd6","updated":"2026-03-08 20:43:40.000000000","message":"CI failures were real, and now fixed.","commit_id":"be2d14bac4192eb7c938783590e313d5c0c3e89f"},{"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":"a086cf3ca48cf594d7fc28a43c448839d5600942","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"fb07d2d3_d8ff22a2","updated":"2026-03-06 20:41:23.000000000","message":"recheck bad tox release broke us","commit_id":"be2d14bac4192eb7c938783590e313d5c0c3e89f"},{"author":{"_account_id":23851,"name":"Riccardo Pittau","email":"elfosardo@gmail.com","username":"elfosardo"},"change_message_id":"2b6dc55111a1473c8ed77fa1ff86ac463f9331f0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"76ddac0c_c40451f3","updated":"2026-03-06 14:18:15.000000000","message":"recheck tox fixed","commit_id":"be2d14bac4192eb7c938783590e313d5c0c3e89f"},{"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":"ac332226bc880404a855a247960459fa2cfa6cc4","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":9,"id":"9c267451_393af77a","updated":"2026-03-11 21:28:10.000000000","message":"recheck 7.846 curl: (35) OpenSSL SSL_connect: SSL_ERROR_ZERO_RETURN in connection to opendev.org:443  in metal3; grenade job failed for no good reason I can tell, seeing if it repros","commit_id":"63fefc3cebeb20251fc08fc80ab8bb0bfb89ec00"}],"ironic/api/controllers/v1/port.py":[{"author":{"_account_id":14228,"name":"Clif Houck","email":"me@clifhouck.com","username":"clif_h"},"change_message_id":"5a6f6d97cab26566127f8f741e4ebd79fbb381dd","unresolved":true,"context_lines":[{"line_number":432,"context_line":"        if (\u0027category\u0027 in fields"},{"line_number":433,"context_line":"                and not api_utils.allow_port_category()):"},{"line_number":434,"context_line":"            raise exception.NotAcceptable()"},{"line_number":435,"context_line":"        allow_dynpg \u003d api_utils.allow_port_available_for_dynamic_portgroup"},{"line_number":436,"context_line":"        if (\u0027available_for_dynamic_portgroup\u0027 in fields"},{"line_number":437,"context_line":"                and not allow_dynpg()):"},{"line_number":438,"context_line":"            raise exception.NotAcceptable()"}],"source_content_type":"text/x-python","patch_set":2,"id":"e0411673_19f536c2","line":435,"updated":"2026-03-05 14:40:18.000000000","message":"Nit: unnecessary assignment","commit_id":"9b8307c3592d4a19e32c8ef11e1d51ac9ec81f81"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"43c9997b7299427453fc8296111dde65e9ca08ca","unresolved":true,"context_lines":[{"line_number":432,"context_line":"        if (\u0027category\u0027 in fields"},{"line_number":433,"context_line":"                and not api_utils.allow_port_category()):"},{"line_number":434,"context_line":"            raise exception.NotAcceptable()"},{"line_number":435,"context_line":"        allow_dynpg \u003d api_utils.allow_port_available_for_dynamic_portgroup"},{"line_number":436,"context_line":"        if (\u0027available_for_dynamic_portgroup\u0027 in fields"},{"line_number":437,"context_line":"                and not allow_dynpg()):"},{"line_number":438,"context_line":"            raise exception.NotAcceptable()"}],"source_content_type":"text/x-python","patch_set":2,"id":"47e861ee_e0c308e4","line":435,"in_reply_to":"e0411673_19f536c2","updated":"2026-03-05 19:51:07.000000000","message":"Concur, but I can also see it staying just form the standpoint of the method name is already long and that feels like its about to hit the wrap limit.","commit_id":"9b8307c3592d4a19e32c8ef11e1d51ac9ec81f81"},{"author":{"_account_id":5890,"name":"Doug Goldstein","email":"cardoe@cardoe.com","username":"cardoe"},"change_message_id":"8fe3f33cb6211eea63f1e002d479470fbafbe6fa","unresolved":true,"context_lines":[{"line_number":57,"context_line":"        \u0027vendor\u0027: {\u0027type\u0027: [\u0027string\u0027, \u0027null\u0027], \u0027maxLength\u0027: 32},"},{"line_number":58,"context_line":"        \u0027category\u0027: {\u0027type\u0027: [\u0027string\u0027, \u0027null\u0027], \u0027maxLength\u0027: 80},"},{"line_number":59,"context_line":"        \u0027available_for_dynamic_portgroup\u0027: {"},{"line_number":60,"context_line":"            \u0027type\u0027: [\u0027string\u0027, \u0027boolean\u0027, \u0027null\u0027]},"},{"line_number":61,"context_line":"    },"},{"line_number":62,"context_line":"    \u0027required\u0027: [\u0027address\u0027],"},{"line_number":63,"context_line":"    \u0027oneOf\u0027: ["}],"source_content_type":"text/x-python","patch_set":5,"id":"9ce40d27_c415826a","line":60,"updated":"2026-03-05 22:05:37.000000000","message":"```suggestion\n            \u0027type\u0027: [\u0027boolean\u0027]},\n```","commit_id":"7900b02d12ce667930aa1fcb386ff2e3e5973395"},{"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":"5f3313c491628b28593dc7595e8bfb12330c41f0","unresolved":false,"context_lines":[{"line_number":57,"context_line":"        \u0027vendor\u0027: {\u0027type\u0027: [\u0027string\u0027, \u0027null\u0027], \u0027maxLength\u0027: 32},"},{"line_number":58,"context_line":"        \u0027category\u0027: {\u0027type\u0027: [\u0027string\u0027, \u0027null\u0027], \u0027maxLength\u0027: 80},"},{"line_number":59,"context_line":"        \u0027available_for_dynamic_portgroup\u0027: {"},{"line_number":60,"context_line":"            \u0027type\u0027: [\u0027string\u0027, \u0027boolean\u0027, \u0027null\u0027]},"},{"line_number":61,"context_line":"    },"},{"line_number":62,"context_line":"    \u0027required\u0027: [\u0027address\u0027],"},{"line_number":63,"context_line":"    \u0027oneOf\u0027: ["}],"source_content_type":"text/x-python","patch_set":5,"id":"87c29738_923a54d7","line":60,"in_reply_to":"9ce40d27_c415826a","updated":"2026-03-05 22:12:21.000000000","message":"Done","commit_id":"7900b02d12ce667930aa1fcb386ff2e3e5973395"}],"ironic/common/release_mappings.py":[{"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":"3135459d7521965c07c478249203304ce361544a","unresolved":true,"context_lines":[{"line_number":958,"context_line":"            \u0027Deployment\u0027: [\u00271.1\u0027, \u00271.0\u0027],"},{"line_number":959,"context_line":"            \u0027DeployTemplate\u0027: [\u00271.2\u0027, \u00271.1\u0027],"},{"line_number":960,"context_line":"            \u0027Port\u0027: [\u00271.16\u0027, \u00271.15\u0027, \u00271.14\u0027, \u00271.13\u0027],"},{"line_number":961,"context_line":"            \u0027Portgroup\u0027: [\u00271.9\u0027, \u00271.8\u0027, \u00271.7\u0027, \u00271.6\u0027],"},{"line_number":962,"context_line":"            \u0027Trait\u0027: [\u00271.1\u0027, \u00271.0\u0027],"},{"line_number":963,"context_line":"            \u0027TraitList\u0027: [\u00271.2\u0027, \u00271.1\u0027, \u00271.0\u0027],"},{"line_number":964,"context_line":"            \u0027VolumeConnector\u0027: [\u00271.1\u0027, \u00271.0\u0027],"}],"source_content_type":"text/x-python","patch_set":1,"id":"ef30adb1_36b3c1e7","line":961,"updated":"2026-03-04 21:04:56.000000000","message":"Needs to append, not replace.","commit_id":"3fd49820dbd08d1b443138ce512e908b3acfbba6"}],"ironic/db/sqlalchemy/models.py":[{"author":{"_account_id":36770,"name":"cid","display_name":"cid","email":"cid@gr-oss.io","username":"cidelight","status":"@gr-oss upstream: Doing good IRONIC things..."},"change_message_id":"d5b20c6458010a85db0b69b5974814c1e5de983b","unresolved":true,"context_lines":[{"line_number":274,"context_line":"    vendor \u003d Column(String(32), nullable\u003dTrue)"},{"line_number":275,"context_line":"    category \u003d Column(String(80), nullable\u003dTrue)"},{"line_number":276,"context_line":"    available_for_dynamic_portgroup \u003d Column(Boolean, server_default\u003dtrue(),"},{"line_number":277,"context_line":"                                            nullable\u003dFalse)"},{"line_number":278,"context_line":""},{"line_number":279,"context_line":"    _node_uuid \u003d orm.relationship("},{"line_number":280,"context_line":"        \"Node\","}],"source_content_type":"text/x-python","patch_set":8,"id":"e80c951e_cedad5fc","line":277,"range":{"start_line":277,"start_character":44,"end_line":277,"end_character":47},"updated":"2026-03-11 15:24:14.000000000","message":"nit: indentation.","commit_id":"a2fbc753486108ff499722df6c13b0d06764bc2e"}]}
