)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"687fc04d4a4482a6755abc7cbf5f8ae29ed916f6","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"WIP \u003d\u003d The AIvengers Initiative"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This is a secret project to provide a code review skill defined for the"},{"line_number":10,"context_line":"Neutron project. This skill could be used by a LLM to perform a code"},{"line_number":11,"context_line":"review using the OpenStack gerrit link."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"30d82344_33e34f43","line":9,"updated":"2026-03-27 17:46:40.000000000","message":"Not very secret any more :)","commit_id":"49dd2238936f7a59cd2e97338c918de012ca762f"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"07212b4ade1c00079ae248838b11129a04a020fc","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"e4122686_036b34a4","updated":"2026-04-17 06:49:50.000000000","message":"Thank you all for your reviews. I\u0027ll move this patch to the new project `agentic-workflows`. Thanks Terry, Brian, Sean and Sylvain for your time.","commit_id":"49dd2238936f7a59cd2e97338c918de012ca762f"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"687fc04d4a4482a6755abc7cbf5f8ae29ed916f6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"58b17be1_4128932b","updated":"2026-03-27 17:46:40.000000000","message":"Thanks for doing this Rodolfo, might be a good topic for the PTG as well.","commit_id":"49dd2238936f7a59cd2e97338c918de012ca762f"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"67a146e5625e419589623953d86bb0130ba00657","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"2b10ae4d_a2cba3a6","updated":"2026-04-14 13:53:55.000000000","message":"feel free to ignore everything in line im jsut sharing some of the learins i have done form working on something similar for 6 months","commit_id":"49dd2238936f7a59cd2e97338c918de012ca762f"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"a413fc6d027d3cca3dbf2a3c085ae342e49e2711","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"bdaf86c1_7ef7101a","in_reply_to":"134cff82_80c37e90","updated":"2026-03-30 11:27:39.000000000","message":"I suppose we need similar md files for all the libs and stadiums also","commit_id":"49dd2238936f7a59cd2e97338c918de012ca762f"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"c3056ef8ded44b665cd8cae30f409cd1d7e93c4f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"134cff82_80c37e90","in_reply_to":"58b17be1_4128932b","updated":"2026-03-28 09:52:54.000000000","message":"Yes, I\u0027m proposing this as a WIP but I would like to add this as a PTG topic, for sure. First I wanted to make this patch public, as a POC","commit_id":"49dd2238936f7a59cd2e97338c918de012ca762f"}],"llm/skills/openstack-code-review/SKILL.md":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"67a146e5625e419589623953d86bb0130ba00657","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"name: openstack-code-review"},{"line_number":3,"context_line":"description: \u003e-"},{"line_number":4,"context_line":"  Review OpenStack code for correctness, style and adherence to community"}],"source_content_type":"text/x-markdown","patch_set":2,"id":"75d0111a_48fbf70c","line":1,"updated":"2026-04-14 13:53:55.000000000","message":"feel free to ignore or steal freely form \nhttps://github.com/SeanMooney/openstack-ai-style-guide/blob/master/agents/code-review-agent.md\nif it helps \n\ntaht techinaly an subagent defiontion rahter then a skill and some of the safolding aroudn it is not obvious like the fact i force the finding to be reported in a stucred form using json schema \nhttps://github.com/SeanMooney/openstack-ai-style-guide/blob/master/schemas/review-report-schema.json\n\nbut that not sticly requried since i did that for ci so i coudl genreate html report an zuul job comments.\n\n\nsome of the par tthat coudl be useful are telling the skill to extract context formthe repo\n\nhttps://github.com/SeanMooney/openstack-ai-style-guide/blob/master/agents/code-review-agent.md#project-configuration-files-mandatory\n\nestablishing the reivew ciritai and importnly what not to review\nhttps://github.com/SeanMooney/openstack-ai-style-guide/blob/master/agents/code-review-agent.md#3-code-analysis-criteria\nhttps://github.com/SeanMooney/openstack-ai-style-guide/blob/master/agents/code-review-agent.md#4-comment-placement-and-scope-rules\n\ngiving more conrete gutnad on how to classify the finding and thre severity/reporting format\nhttps://github.com/SeanMooney/openstack-ai-style-guide/blob/master/agents/code-review-agent.md#severity-guidelines\n\nand finally calling out the prinspals for how you want review to be done in general.\n\nhttps://github.com/SeanMooney/openstack-ai-style-guide/blob/master/agents/code-review-agent.md#review-principles\n\nim biased obviously but i like that i make my skill alwasy include a positive observations section.\n\nhttps://minio-api.teim.app/zuul-logs/469/main/469749b290d640b88866015aeb6cde84/code-review/review-report.html#:~:text\u003dPositive%20Observations\n\n\n\ni have maritally change how this review workflow works in the last few weeks and there is now quite a lot i can remove form that defintion that should live elsewhere\n\ni.e.moved up to the orchestrate agent\nhttps://github.com/SeanMooney/openstack-ai-style-guide/blob/master/agents/teim-review-agent.md since that is now respoible for the workflwo and the code-review shoudl really just be trimmed don to the final reivew part.","commit_id":"49dd2238936f7a59cd2e97338c918de012ca762f"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"07212b4ade1c00079ae248838b11129a04a020fc","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"name: openstack-code-review"},{"line_number":3,"context_line":"description: \u003e-"},{"line_number":4,"context_line":"  Review OpenStack code for correctness, style and adherence to community"}],"source_content_type":"text/x-markdown","patch_set":2,"id":"adfc97e9_abc3f70e","line":1,"in_reply_to":"75d0111a_48fbf70c","updated":"2026-04-17 06:49:50.000000000","message":"I\u0027ll add your feedback to the patch I\u0027ll propose to `agentic-workflows`. First of all, I\u0027ll make this a `persona` file, that will be used by the new `.agents/skills/code-review/SKILL.md` that is being proposed. I\u0027ll try to adapt this file to the guidelines you are proposing. Thanks a lot!","commit_id":"49dd2238936f7a59cd2e97338c918de012ca762f"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"65ef7d7ae5c36145bbc7c7d14546662c776ab526","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"name: openstack-code-review"},{"line_number":3,"context_line":"description: \u003e-"},{"line_number":4,"context_line":"  Review OpenStack code for correctness, style and adherence to community"}],"source_content_type":"text/x-markdown","patch_set":2,"id":"b4cee7d3_53bb6461","line":1,"in_reply_to":"adfc97e9_abc3f70e","updated":"2026-04-17 13:58:20.000000000","message":"so that one of the fundmental diesgin disagreemnt i have\ni do not belive we shoudl have persona files.\n\n\nbut if you want to create a knowledge/repo/neutron.md which list all the repos it apples to and encode the convertion ther you could.\n\nalternatively i think tis fine or even perferabel to have this info in the neutron repo docs and have knowledge/repo/neutron.md reference where it is or encode that in a AGENT.md or the existing HACKING.RST\n\nthe benifit of this tirbal knowlage living in the neutron repo is you can update it as a core teim more quickly.\n\nnot that i woudl be against service teams having +2 rights or beign part of the agentic-workflows core teams via groups\n\ni would just sugest waitign a week or so so we can dicuss the best ways to work\n\nfor example if project teams do not want to enocde tribale knolwage in  the contibutor docs maybe we can take the devstack plugin model where\nyou can have a folder that if it exits the skills in the agentic-workflows repo woudl use.\n\nsince we have not even started those discussion i would not encourage you to abandon the exploreation you are doing here","commit_id":"49dd2238936f7a59cd2e97338c918de012ca762f"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"67a146e5625e419589623953d86bb0130ba00657","unresolved":true,"context_lines":[{"line_number":34,"context_line":""},{"line_number":35,"context_line":"### Style \u0026 Hacking Rules"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"All projects follow the [OpenStack Style Commandments](https://docs.openstack.org/hacking/latest/)."},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"### Testing"},{"line_number":40,"context_line":""}],"source_content_type":"text/x-markdown","patch_set":2,"id":"ac001d2f_884f3920","line":37,"updated":"2026-04-14 13:53:55.000000000","message":"so to aovid hithing the wepage over and over i expoertred hacking to a markdonw file\nhttps://github.com/SeanMooney/openstack-ai-style-guide/blob/master/references/hacking.md\nwith some addtional canonical refneces\nhttps://github.com/SeanMooney/openstack-ai-style-guide/tree/master/references\n\nwhich i then distileld into \n\nhttps://github.com/SeanMooney/openstack-ai-style-guide/blob/master/docs/comprehensive-guide.md\nfor humans and\nhttps://github.com/SeanMooney/openstack-ai-style-guide/blob/master/docs/quick-rules.md\nfor llms\n\ni woudl generally advise agsint including urls in your skills adn only referneice files in the repo.","commit_id":"49dd2238936f7a59cd2e97338c918de012ca762f"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"07212b4ade1c00079ae248838b11129a04a020fc","unresolved":true,"context_lines":[{"line_number":34,"context_line":""},{"line_number":35,"context_line":"### Style \u0026 Hacking Rules"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"All projects follow the [OpenStack Style Commandments](https://docs.openstack.org/hacking/latest/)."},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"### Testing"},{"line_number":40,"context_line":""}],"source_content_type":"text/x-markdown","patch_set":2,"id":"5511fbce_2a4675bf","line":37,"in_reply_to":"ac001d2f_884f3920","updated":"2026-04-17 06:49:50.000000000","message":"In any case, I think this should be now in `.agents/skills/code-review/SKILL.md` as a default reference for all reviews","commit_id":"49dd2238936f7a59cd2e97338c918de012ca762f"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"d130384deaf29b81c58b59bccded412ec4755a7d","unresolved":true,"context_lines":[{"line_number":38,"context_line":""},{"line_number":39,"context_line":"### Testing"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"- New features have unit tests or functional tests."},{"line_number":42,"context_line":"- Bug fixes include a test that fails without the fix."},{"line_number":43,"context_line":"- Test classes inherit from the project\u0027s base test class."},{"line_number":44,"context_line":"- `setUp`/`tearDown` call `super()`; prefer `addCleanup` over `tearDown`."}],"source_content_type":"text/x-markdown","patch_set":2,"id":"325009a7_261ca362","line":41,"updated":"2026-04-01 21:27:26.000000000","message":"My personal preference/soap box would be that functional tests should be preferred in cases where a a method does not take an input and produce an output w/o side effects (with an exception for very minimal mocking) unless it is a case that is hard to test functionally. :p","commit_id":"49dd2238936f7a59cd2e97338c918de012ca762f"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"67a146e5625e419589623953d86bb0130ba00657","unresolved":true,"context_lines":[{"line_number":38,"context_line":""},{"line_number":39,"context_line":"### Testing"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"- New features have unit tests or functional tests."},{"line_number":42,"context_line":"- Bug fixes include a test that fails without the fix."},{"line_number":43,"context_line":"- Test classes inherit from the project\u0027s base test class."},{"line_number":44,"context_line":"- `setUp`/`tearDown` call `super()`; prefer `addCleanup` over `tearDown`."}],"source_content_type":"text/x-markdown","patch_set":2,"id":"b0f4aec1_9e81903f","line":41,"in_reply_to":"325009a7_261ca362","updated":"2026-04-14 13:53:55.000000000","message":"if this was nova we woud lthink of functionatl test as test where we only mock the nova bondaries adn try not to mock any of nova\u0027s internalys\n\nso in the fucntional tests we have a fixture for neutron api interaction but we do not mock any of the internal fucntions that call neutorn just fake the api respoces at teh edge\n\nsoame for the libvirt virt driver we create a fake libvirt connection and emulate libvirt but we try to aoid mockign any of the internals fo the drivers.\n\nso i have alwasy tought as fucntional tests as runsing as much fo the service code as possibel while only mocking or using fakes for the external systems the service interacts with.\n\nthey are the middelground between unit test that mock extensivly adn integration ro fullstack tests taht try to mock nothing.\n\nyou woudl be suprised with how much you can test in such a functional test.\n\nnova tests neutron sriov prot live migration as one example of taking this to an extream.","commit_id":"49dd2238936f7a59cd2e97338c918de012ca762f"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"07212b4ade1c00079ae248838b11129a04a020fc","unresolved":true,"context_lines":[{"line_number":38,"context_line":""},{"line_number":39,"context_line":"### Testing"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"- New features have unit tests or functional tests."},{"line_number":42,"context_line":"- Bug fixes include a test that fails without the fix."},{"line_number":43,"context_line":"- Test classes inherit from the project\u0027s base test class."},{"line_number":44,"context_line":"- `setUp`/`tearDown` call `super()`; prefer `addCleanup` over `tearDown`."}],"source_content_type":"text/x-markdown","patch_set":2,"id":"bb04ff17_a4e7fd1d","line":41,"in_reply_to":"b0f4aec1_9e81903f","updated":"2026-04-17 06:49:50.000000000","message":"That needs to be refined, for sure. Anything that is pure algorithmics (for example, some job I did recently with the OVN L3 scheduler) can be tested with unit tests only.\n\nBut when we need to interact with the filesystem, databases (SQL, OVN), network, etc, we should use functional. As commented, we need to be more specific here.","commit_id":"49dd2238936f7a59cd2e97338c918de012ca762f"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"67a146e5625e419589623953d86bb0130ba00657","unresolved":true,"context_lines":[{"line_number":46,"context_line":""},{"line_number":47,"context_line":"### Commit Message"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"OpenStack commit messages must include:"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"- Imperative subject line (50-72 chars), optionally use a initial tag for"},{"line_number":52,"context_line":"  specific area developments ([DHCP], [OVN], [L3], etc.)."}],"source_content_type":"text/x-markdown","patch_set":2,"id":"15c9c357_7bf56c8b","line":49,"updated":"2026-04-14 13:53:55.000000000","message":"https://github.com/SeanMooney/openstack-ai-style-guide/blob/master/docs/quick-rules.md#4-commit-message-format-all-required is the condence form of \n\nhttps://wiki.openstack.org/wiki/GitCommitMessages\nhttps://github.com/SeanMooney/openstack-ai-style-guide/blob/master/references/commit-message.md\n\ni have found that works pretty well but\n\ni think what you have suggested below woudl also work well\nespically if you use the UpgradeImpact tag\n\nmost poject seam to have stome using the *Impact tage when the assocated automation was remvoed\n\nhttps://github.com/SeanMooney/openstack-ai-style-guide/blob/master/references/commit-message.md?plain\u003d1#L261-L295\n\nbut i agree its valuable to capture them if its part fo your project workflow.\n\nit would likely be beter to hage this in hacking.rst or in teh contibtor docs however.","commit_id":"49dd2238936f7a59cd2e97338c918de012ca762f"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"07212b4ade1c00079ae248838b11129a04a020fc","unresolved":true,"context_lines":[{"line_number":46,"context_line":""},{"line_number":47,"context_line":"### Commit Message"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"OpenStack commit messages must include:"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"- Imperative subject line (50-72 chars), optionally use a initial tag for"},{"line_number":52,"context_line":"  specific area developments ([DHCP], [OVN], [L3], etc.)."}],"source_content_type":"text/x-markdown","patch_set":2,"id":"a65fac6e_180326e2","line":49,"in_reply_to":"15c9c357_7bf56c8b","updated":"2026-04-17 06:49:50.000000000","message":"I think that should go to this new generic code-review skill that is being created. Thanks for the reference.","commit_id":"49dd2238936f7a59cd2e97338c918de012ca762f"}],"llm/skills/openstack-code-review/neutron.md":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"67a146e5625e419589623953d86bb0130ba00657","unresolved":true,"context_lines":[{"line_number":1,"context_line":"# Neutron Code Review Guide"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"Neutron-specific review rules layered on top of the general OpenStack review"},{"line_number":4,"context_line":"skill. Reference files (in the Neutron repository):"}],"source_content_type":"text/x-markdown","patch_set":2,"id":"ff1049da_82f95a34","line":1,"updated":"2026-04-14 13:53:55.000000000","message":"so one of the reasons i was going to suggest deferring in repos skills\nis that today there has not been a convergence on how to do that in a porable way.\n\nthis propsoal for better or worse sidesteps that by using a non standard directoy that no tool will auto discover which is both good and bad as it requires an explicitly opt in.\n\nrecently claude code ahs propsoe a way todo simple skill distirbution which some tools are slowly adopting\n\nhttps://code.claude.com/docs/en/plugin-marketplaces\nhttps://docs.factory.ai/cli/configuration/plugins#claude-code-compatibility\n\nif we were to have a seperate repo i would adovcate for the plugin + marketplace layout but i guess this is also valid for in repo skills.\n\ni am wondering why you have choosen to not exted the ofcially review/style docuemtn however https://github.com/openstack/neutron/blob/master/HACKING.rst is the auoritive source for style in the repo and https://github.com/openstack/neutron/tree/master/doc/source/contributor shoudl encode the paractices\n\nin my propsoal i effectivly advocated for the repo specific knolage to be but into HACKING.rst if its short 1-2 line ruels and into dedciated and refernced docs if longer.\n\nso that they are human and ai readable.","commit_id":"49dd2238936f7a59cd2e97338c918de012ca762f"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"07212b4ade1c00079ae248838b11129a04a020fc","unresolved":true,"context_lines":[{"line_number":1,"context_line":"# Neutron Code Review Guide"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"Neutron-specific review rules layered on top of the general OpenStack review"},{"line_number":4,"context_line":"skill. Reference files (in the Neutron repository):"}],"source_content_type":"text/x-markdown","patch_set":2,"id":"ea2c84bf_97144add","line":1,"in_reply_to":"ff1049da_82f95a34","updated":"2026-04-17 06:49:50.000000000","message":"Yes and now that we have `agentic-workflows` I\u0027ll abandon this patch and propose it for this project. Thanks!","commit_id":"49dd2238936f7a59cd2e97338c918de012ca762f"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"d130384deaf29b81c58b59bccded412ec4755a7d","unresolved":true,"context_lines":[{"line_number":9,"context_line":""},{"line_number":10,"context_line":"The Neutron project depends on different libraries. These are the most important"},{"line_number":11,"context_line":"and controlled (partially) by the Neutron team:"},{"line_number":12,"context_line":"- [ovsdbapp](https://opendev.org/openstack/ovsdbapp)"},{"line_number":13,"context_line":"- [neutron-lib](https://opendev.org/openstack/neutron-lib)"},{"line_number":14,"context_line":"- [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy)"},{"line_number":15,"context_line":"- [os-ken](https://opendev.org/openstack/os-ken)"}],"source_content_type":"text/x-markdown","patch_set":2,"id":"00baca73_1340e092","line":12,"updated":"2026-04-01 21:27:26.000000000","message":"It might be good to link to\n```\n[python-ovs](https://github.com/openvswitch/ovs/tree/main/python)\n```\nsince ovsdbapp uses it so heavily and the Idl concept might be important?","commit_id":"49dd2238936f7a59cd2e97338c918de012ca762f"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"07212b4ade1c00079ae248838b11129a04a020fc","unresolved":true,"context_lines":[{"line_number":9,"context_line":""},{"line_number":10,"context_line":"The Neutron project depends on different libraries. These are the most important"},{"line_number":11,"context_line":"and controlled (partially) by the Neutron team:"},{"line_number":12,"context_line":"- [ovsdbapp](https://opendev.org/openstack/ovsdbapp)"},{"line_number":13,"context_line":"- [neutron-lib](https://opendev.org/openstack/neutron-lib)"},{"line_number":14,"context_line":"- [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy)"},{"line_number":15,"context_line":"- [os-ken](https://opendev.org/openstack/os-ken)"}],"source_content_type":"text/x-markdown","patch_set":2,"id":"ed0bd438_3961def5","line":12,"in_reply_to":"00baca73_1340e092","updated":"2026-04-17 06:49:50.000000000","message":"For sure it is important.","commit_id":"49dd2238936f7a59cd2e97338c918de012ca762f"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"67a146e5625e419589623953d86bb0130ba00657","unresolved":true,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"## Neutron Hacking Checks"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"These are enforced by flake8 local plugins in `tox.ini`. Flag violations even"},{"line_number":23,"context_line":"if the linter hasn\u0027t caught them yet (e.g. in comments or strings). The extension"},{"line_number":24,"context_line":"list is provided in the `[flake8:local-plugins]extension` variable."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"## Test Conventions"}],"source_content_type":"text/x-markdown","patch_set":2,"id":"d3acb4ea_b15065d3","line":23,"range":{"start_line":22,"start_character":56,"end_line":23,"end_character":37},"updated":"2026-04-14 13:53:55.000000000","message":"that interesting becasue i generally take the opiste approch and encurage llms to not flag thign the linters explciy check so that ti will focus on the higher signal to noise ratio feedback.","commit_id":"49dd2238936f7a59cd2e97338c918de012ca762f"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"07212b4ade1c00079ae248838b11129a04a020fc","unresolved":true,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"## Neutron Hacking Checks"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"These are enforced by flake8 local plugins in `tox.ini`. Flag violations even"},{"line_number":23,"context_line":"if the linter hasn\u0027t caught them yet (e.g. in comments or strings). The extension"},{"line_number":24,"context_line":"list is provided in the `[flake8:local-plugins]extension` variable."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"## Test Conventions"}],"source_content_type":"text/x-markdown","patch_set":2,"id":"e2247bc9_885104fd","line":23,"range":{"start_line":22,"start_character":56,"end_line":23,"end_character":37},"in_reply_to":"d3acb4ea_b15065d3","updated":"2026-04-17 06:49:50.000000000","message":"You are right.","commit_id":"49dd2238936f7a59cd2e97338c918de012ca762f"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"67a146e5625e419589623953d86bb0130ba00657","unresolved":true,"context_lines":[{"line_number":29,"context_line":"- Unit tests live under `neutron/tests/unit/` mirroring the package structure."},{"line_number":30,"context_line":"- Functional tests under `neutron/tests/functional/` (require env setup)."},{"line_number":31,"context_line":"- Default test timeout: 180 seconds (`OS_TEST_TIMEOUT`)."},{"line_number":32,"context_line":"- Test runner: `stestr` via `tox`."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"## API Changes"},{"line_number":35,"context_line":""}],"source_content_type":"text/x-markdown","patch_set":2,"id":"f0f22ab5_7f0653ad","line":32,"updated":"2026-04-14 13:53:55.000000000","message":"this for example belongs in HACKING.rst or https://github.com/openstack/neutron/tree/master/doc/source/contributor/testing right so it no duplciate adn visable to humans and ai alike.","commit_id":"49dd2238936f7a59cd2e97338c918de012ca762f"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"07212b4ade1c00079ae248838b11129a04a020fc","unresolved":true,"context_lines":[{"line_number":29,"context_line":"- Unit tests live under `neutron/tests/unit/` mirroring the package structure."},{"line_number":30,"context_line":"- Functional tests under `neutron/tests/functional/` (require env setup)."},{"line_number":31,"context_line":"- Default test timeout: 180 seconds (`OS_TEST_TIMEOUT`)."},{"line_number":32,"context_line":"- Test runner: `stestr` via `tox`."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"## API Changes"},{"line_number":35,"context_line":""}],"source_content_type":"text/x-markdown","patch_set":2,"id":"637a2b25_bda7014c","line":32,"in_reply_to":"f0f22ab5_7f0653ad","updated":"2026-04-17 06:49:50.000000000","message":"Right","commit_id":"49dd2238936f7a59cd2e97338c918de012ca762f"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"67a146e5625e419589623953d86bb0130ba00657","unresolved":true,"context_lines":[{"line_number":31,"context_line":"- Default test timeout: 180 seconds (`OS_TEST_TIMEOUT`)."},{"line_number":32,"context_line":"- Test runner: `stestr` via `tox`."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"## API Changes"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"- Must have test coverage in `neutron-tempest-plugin` or Tempest."},{"line_number":37,"context_line":"- At minimum one API test; prefer both API and scenario tests."}],"source_content_type":"text/x-markdown","patch_set":2,"id":"c85e9eb4_c06ae6b0","line":34,"updated":"2026-04-14 13:53:55.000000000","message":"https://github.com/openstack/neutron/blob/master/doc/source/contributor/testing/tempest.rst#api-tests","commit_id":"49dd2238936f7a59cd2e97338c918de012ca762f"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"07212b4ade1c00079ae248838b11129a04a020fc","unresolved":true,"context_lines":[{"line_number":31,"context_line":"- Default test timeout: 180 seconds (`OS_TEST_TIMEOUT`)."},{"line_number":32,"context_line":"- Test runner: `stestr` via `tox`."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"## API Changes"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"- Must have test coverage in `neutron-tempest-plugin` or Tempest."},{"line_number":37,"context_line":"- At minimum one API test; prefer both API and scenario tests."}],"source_content_type":"text/x-markdown","patch_set":2,"id":"5a668066_e6faa55d","line":34,"in_reply_to":"c85e9eb4_c06ae6b0","updated":"2026-04-17 06:49:50.000000000","message":"Good reference I need to add.","commit_id":"49dd2238936f7a59cd2e97338c918de012ca762f"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"67a146e5625e419589623953d86bb0130ba00657","unresolved":true,"context_lines":[{"line_number":45,"context_line":""},{"line_number":46,"context_line":"1. Tag the commit message with `UpgradeImpact`."},{"line_number":47,"context_line":"2. Verify the dependency is available on supported platforms (Ubuntu LTS, CentOS)."},{"line_number":48,"context_line":"3. Trigger experimental platform jobs via `check experimental` in Gerrit."},{"line_number":49,"context_line":"4. If a platform would break, require graceful fallback or `oslo.config` conditional."},{"line_number":50,"context_line":"5. Add a sanity check in `neutron/cmd/sanity/checks.py`."},{"line_number":51,"context_line":""}],"source_content_type":"text/x-markdown","patch_set":2,"id":"b3b966da_d6c2a605","line":48,"range":{"start_line":48,"start_character":0,"end_line":48,"end_character":73},"updated":"2026-04-14 13:53:55.000000000","message":"hum im not really sure how you eant ti to do this without it using the gerrit api with a http pwassword\n\ndo you just eant it to sugest the invoker leage the `check experimental` comment","commit_id":"49dd2238936f7a59cd2e97338c918de012ca762f"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"07212b4ade1c00079ae248838b11129a04a020fc","unresolved":true,"context_lines":[{"line_number":45,"context_line":""},{"line_number":46,"context_line":"1. Tag the commit message with `UpgradeImpact`."},{"line_number":47,"context_line":"2. Verify the dependency is available on supported platforms (Ubuntu LTS, CentOS)."},{"line_number":48,"context_line":"3. Trigger experimental platform jobs via `check experimental` in Gerrit."},{"line_number":49,"context_line":"4. If a platform would break, require graceful fallback or `oslo.config` conditional."},{"line_number":50,"context_line":"5. Add a sanity check in `neutron/cmd/sanity/checks.py`."},{"line_number":51,"context_line":""}],"source_content_type":"text/x-markdown","patch_set":2,"id":"81d42c51_0ef0f44f","line":48,"range":{"start_line":48,"start_character":0,"end_line":48,"end_character":73},"in_reply_to":"b3b966da_d6c2a605","updated":"2026-04-17 06:49:50.000000000","message":"I think that will be more complex. I would suggest that the review will need to output this for the user to manually execute it","commit_id":"49dd2238936f7a59cd2e97338c918de012ca762f"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"67a146e5625e419589623953d86bb0130ba00657","unresolved":true,"context_lines":[{"line_number":58,"context_line":"2. Review non-voting and 3rd-party CI job results."},{"line_number":59,"context_line":"3. Coordinate with affected sub-projects to resolve breakage."},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"## ML2/OVN Specifics"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"- OVS-related OVSDB commands live in the `ovsdbapp` library. Neutron also implements local"},{"line_number":64,"context_line":"  commands defined in `neutron/plugins/ml2/drivers/ovn/mech_driver/ovsdb/api.py` and"}],"source_content_type":"text/x-markdown","patch_set":2,"id":"9554bf1c_8a2f0de6","line":61,"updated":"2026-04-14 13:53:55.000000000","message":"this should all be captured in https://github.com/openstack/neutron/tree/master/doc/source/contributor/ovn no?","commit_id":"49dd2238936f7a59cd2e97338c918de012ca762f"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"07212b4ade1c00079ae248838b11129a04a020fc","unresolved":true,"context_lines":[{"line_number":58,"context_line":"2. Review non-voting and 3rd-party CI job results."},{"line_number":59,"context_line":"3. Coordinate with affected sub-projects to resolve breakage."},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"## ML2/OVN Specifics"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"- OVS-related OVSDB commands live in the `ovsdbapp` library. Neutron also implements local"},{"line_number":64,"context_line":"  commands defined in `neutron/plugins/ml2/drivers/ovn/mech_driver/ovsdb/api.py` and"}],"source_content_type":"text/x-markdown","patch_set":2,"id":"b9abc721_ed52316a","line":61,"in_reply_to":"9554bf1c_8a2f0de6","updated":"2026-04-17 06:49:50.000000000","message":"Yes, this is a tech debt we need to address","commit_id":"49dd2238936f7a59cd2e97338c918de012ca762f"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"d130384deaf29b81c58b59bccded412ec4755a7d","unresolved":true,"context_lines":[{"line_number":65,"context_line":"  implemented in `neutron/plugins/ml2/drivers/ovn/mech_driver/ovsdb/impl_idl_ovn.py`."},{"line_number":66,"context_line":"- If a new method is locally implemented in Neutron, check if that could be rehomed to"},{"line_number":67,"context_line":"  `ovsdbapp`."},{"line_number":68,"context_line":"- Check that all OVN commands are actually executed, by calling `execute(check_error\u003dTrue)` or"},{"line_number":69,"context_line":"  adding it to a transaction, inside a transaction context."},{"line_number":70,"context_line":"- When an OVN IDL event is attended by the Neutron API, check what worker will attend this event,"},{"line_number":71,"context_line":"  based on the `HashRingManager` instance."}],"source_content_type":"text/x-markdown","patch_set":2,"id":"f97ce402_8a78a9ca","line":68,"updated":"2026-04-01 21:27:26.000000000","message":"We could pretty easily subclass this and make a version with the default as check_error\u003dTrue, it\u0027d save so much typing. 😊","commit_id":"49dd2238936f7a59cd2e97338c918de012ca762f"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"07212b4ade1c00079ae248838b11129a04a020fc","unresolved":true,"context_lines":[{"line_number":65,"context_line":"  implemented in `neutron/plugins/ml2/drivers/ovn/mech_driver/ovsdb/impl_idl_ovn.py`."},{"line_number":66,"context_line":"- If a new method is locally implemented in Neutron, check if that could be rehomed to"},{"line_number":67,"context_line":"  `ovsdbapp`."},{"line_number":68,"context_line":"- Check that all OVN commands are actually executed, by calling `execute(check_error\u003dTrue)` or"},{"line_number":69,"context_line":"  adding it to a transaction, inside a transaction context."},{"line_number":70,"context_line":"- When an OVN IDL event is attended by the Neutron API, check what worker will attend this event,"},{"line_number":71,"context_line":"  based on the `HashRingManager` instance."}],"source_content_type":"text/x-markdown","patch_set":2,"id":"2f9488d1_aa040448","line":68,"in_reply_to":"f97ce402_8a78a9ca","updated":"2026-04-17 06:49:50.000000000","message":"Yes, that\u0027s right","commit_id":"49dd2238936f7a59cd2e97338c918de012ca762f"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"67a146e5625e419589623953d86bb0130ba00657","unresolved":true,"context_lines":[{"line_number":73,"context_line":""},{"line_number":74,"context_line":"## DB Migrations"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"- Alembic migrations in `neutron/db/migration/alembic_migrations/versions/`."},{"line_number":77,"context_line":"- Check `check_migration` step in `tox -e pep8`."},{"line_number":78,"context_line":"- Migrations must be backward-compatible (online schema changes)."},{"line_number":79,"context_line":"- Verify HEAD file consistency."}],"source_content_type":"text/x-markdown","patch_set":2,"id":"61ed56db_09853c4b","line":76,"updated":"2026-04-14 13:53:55.000000000","message":"https://github.com/openstack/neutron/blob/master/doc/source/contributor/alembic_migrations.rst","commit_id":"49dd2238936f7a59cd2e97338c918de012ca762f"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"07212b4ade1c00079ae248838b11129a04a020fc","unresolved":true,"context_lines":[{"line_number":73,"context_line":""},{"line_number":74,"context_line":"## DB Migrations"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"- Alembic migrations in `neutron/db/migration/alembic_migrations/versions/`."},{"line_number":77,"context_line":"- Check `check_migration` step in `tox -e pep8`."},{"line_number":78,"context_line":"- Migrations must be backward-compatible (online schema changes)."},{"line_number":79,"context_line":"- Verify HEAD file consistency."}],"source_content_type":"text/x-markdown","patch_set":2,"id":"ae6176a0_1da667ca","line":76,"in_reply_to":"61ed56db_09853c4b","updated":"2026-04-17 06:49:50.000000000","message":"+1 thanks","commit_id":"49dd2238936f7a59cd2e97338c918de012ca762f"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"687fc04d4a4482a6755abc7cbf5f8ae29ed916f6","unresolved":true,"context_lines":[{"line_number":99,"context_line":"tox -e genconfig"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"# Coverage (must be \u003e\u003d 82%)"},{"line_number":102,"context_line":"tox -e cover"},{"line_number":103,"context_line":"```"}],"source_content_type":"text/x-markdown","patch_set":2,"id":"b64fc886_10684731","line":102,"updated":"2026-03-27 17:46:40.000000000","message":"Maybe add these as well:\n\ntox -e docs\ntox -e releasenotes","commit_id":"49dd2238936f7a59cd2e97338c918de012ca762f"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"07212b4ade1c00079ae248838b11129a04a020fc","unresolved":true,"context_lines":[{"line_number":99,"context_line":"tox -e genconfig"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"# Coverage (must be \u003e\u003d 82%)"},{"line_number":102,"context_line":"tox -e cover"},{"line_number":103,"context_line":"```"}],"source_content_type":"text/x-markdown","patch_set":2,"id":"cf423263_28b36a18","line":102,"in_reply_to":"546bf885_c469aa03","updated":"2026-04-17 06:49:50.000000000","message":"Yeah, that would be better to store them in HACKING.rst and update them there.","commit_id":"49dd2238936f7a59cd2e97338c918de012ca762f"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"67a146e5625e419589623953d86bb0130ba00657","unresolved":true,"context_lines":[{"line_number":99,"context_line":"tox -e genconfig"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"# Coverage (must be \u003e\u003d 82%)"},{"line_number":102,"context_line":"tox -e cover"},{"line_number":103,"context_line":"```"}],"source_content_type":"text/x-markdown","patch_set":2,"id":"546bf885_c469aa03","line":102,"in_reply_to":"b64fc886_10684731","updated":"2026-04-14 13:53:55.000000000","message":"these i woudl put into HACKING.rst\n\nnova has some outdated exampel that need to be updated\nhttps://github.com/openstack/nova/blob/master/HACKING.rst#running-tests\n\nor a tox tests or local-tests.rst under https://github.com/openstack/neutron/tree/master/doc/source/contributor/testing","commit_id":"49dd2238936f7a59cd2e97338c918de012ca762f"}]}
