)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"c2f0e6e90ec8b0fcf2088f99a727d48df466f4eb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"baead439_0b3918d7","updated":"2026-04-14 12:36:50.000000000","message":"Hi Sean! I had something similar for Neutron. I\u0027ll propose it during the PTG: https://review.opendev.org/c/openstack/neutron/+/982466.\n\nOf course, is the initial draft and needs to be polished. The goal of my patch is to provide a code-review skill for the Neutron patches. But your patch is also proposing interesting ideas for testing, tooling, etc.\n\nI think we should, in a future, have a common resource AI tooling for all projects, that could be extended with the project particular files.","commit_id":"6a41556ea2705edd701efd1f8b79ab3db2c250e4"},{"author":{"_account_id":29071,"name":"norman shen","email":"yshxxsjt715@gmail.com","username":"ushen"},"change_message_id":"e23e1ed7d579f30da34d0af8e3ac6e3a5d788814","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"8afb4e98_1e3fc051","updated":"2026-04-14 23:39:58.000000000","message":"This might be off-topic but I\u0027m curious what could be a rough estimated expenses paid monthly?","commit_id":"6a41556ea2705edd701efd1f8b79ab3db2c250e4"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"f000af3520c5324c861471dfd04a0d71e10a1262","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"949668cf_17fa36ff","updated":"2026-04-14 18:37:17.000000000","message":"Very happy to see this be so sparse and also focused on routing to existing/canonical information instead of building new stuff. I know this is early, so just some comments from me about my feelings on the matter.","commit_id":"6a41556ea2705edd701efd1f8b79ab3db2c250e4"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"f3406599ce774a1451e1c459f42bf89686ecfe28","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"9d84e889_9d869545","updated":"2026-04-15 11:52:36.000000000","message":"ill see if i can review this later today to incorporate dans feedback\ni.e. removing the ai and claude md fiels and putting them in .gitignore\n+ adding explicit language that git operations always require explicitly instruction or consent before performing them\n\nas i noted in my response the harness i have been using have always prompted me for git operations in general but im happy with making sure the over eager ones are told they shoudl not assume they can commit freely\n\nim not going to revise this often before the ptg is over but if there are any other general point of feedback let me know and im happy to incorporate them.","commit_id":"6a41556ea2705edd701efd1f8b79ab3db2c250e4"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"f3406599ce774a1451e1c459f42bf89686ecfe28","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"d56df3e8_7b078c1e","in_reply_to":"8afb4e98_1e3fc051","updated":"2026-04-15 11:52:36.000000000","message":"i dont actully have the number but from my usage of my personal subsciptions seperaly from my work ones the 20 $/€ a month plan form antropic is good for 2-3 hours of use if you use sonnet, the 225€ a month plan from openai is insane and after trying to use it for multiple things in parallel i had 93% of my usage limit left in the 5 hour window when i was exclusivly using gpt 5.4.\n\nalso with the z.ai coding plan the max limit which is very cheap is also very generuos so if you were paying for it your self with a subscription plan the 100 ish a month plan would likely cover most if not all of your work coding time.\n\nmaybe not if your using opus but for all parctical usecase that woudl be it.\n\nfor our work we have api pricing and we can see it if we check per session but not overall. i would say its probaly 5-10X the subscription princig.\n\nbut what that means practically speaking is if i get enough value form ai to offload even 1 days worth of work a mount it pays for its self.\nand i say that working in a \"medium\" cost geo meaning the competive market salary range for my postion in ireland is about half of the equivalent in the US. \n\nso for high cost geos it need to offset less work to break even and for low cost geos it need to offset more.\n\nthe question beyond the economics is factoring any rework time to achieve the same  or a higher quality bar what is the the return on this look liek.\n\n\noverall i would say that ai has reduced my personal level of burnout because i always reviewed my own code anyway both before and after pushing it to Gerrit.\n\ni have not seen a large or even meaning full increase in review submissions as a result of ai in any openstack repo i work on and i don\u0027t think we have seen the same issue with quality that other communities have had.\n\nthe only negitive impact i have had is people atribiting design choices i explcity made to ai slop and not being particularly kind in there wording when they did not agree assuming the ai did it. but i know self review pre and post push is not a common workflow and that is really required if your going to use ai well today.","commit_id":"6a41556ea2705edd701efd1f8b79ab3db2c250e4"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"fd164838e023890b6a21b3945c1d080b8af7b42d","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":1,"id":"70f57944_cb1464a1","in_reply_to":"baead439_0b3918d7","updated":"2026-04-14 12:54:41.000000000","message":"cool i have been building a ai review system since october which might be useful \n\nhttps://github.com/SeanMooney/openstack-ai-style-guide/blob/master/skills/teim-review/SKILL.md\nhttps://github.com/SeanMooney/openstack-ai-style-guide/blob/master/agents/teim-review-agent.md\nhttps://github.com/SeanMooney/openstack-ai-style-guide/blob/master/agents/zuul-context-extractor.md\nhttps://github.com/SeanMooney/openstack-ai-style-guide/blob/master/agents/commit-summary.md\nhttps://github.com/SeanMooney/openstack-ai-style-guide/blob/master/agents/code-review-agent.md\n\npart of the reason i didnt want to start with skills in the repos is i am pretty sure there are several diffent attpemt to do that that i\nthink could be shared/merged together.\n\ni have been triailing this with the watcher team fo rthe last cycle \nhttps://zuul.teim.app/t/main/builds\nbut recently i update the repo to make it a claude code plugin/market place and i was workign on makeing it work in other tools.\nhttps://github.com/SeanMooney/openstack-ai-style-guide/pull/32\n\nthat why i rasied the idea of having a common comunity ai-tools repo or perhasp including this in hacking.\n\nin repo skill are also not a bad idea but we obvously should share or leaning were possibel instaead of siloing them\n\nin this current prosal you woudl just add teh path to your neuton knowlage file to the AGENTS.md in neutron and tell it to apply them when doing review and in yoru agentic-coding.rst you sould advertise the existance of the skill and instruction on how to use it.\n\nfor portablity im likely going to refactor my teim-review skill awasy form subagent to just being a colletion of skills so it works more nativly across more tools but im still reflecting on that. there are tradeoof whenyou do that like lossint the ablity to use a diffent model and not havign clean context but it will work with more tools.\n\nill check out your reivew","commit_id":"6a41556ea2705edd701efd1f8b79ab3db2c250e4"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"810d8e25b97b1a6e4d40432e37fc78147dc40343","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"07612e3e_1d0e7c3c","updated":"2026-04-15 18:59:17.000000000","message":"Looks good to me at a quick skim after you revised. Very happy to see this going this direction, thanks!","commit_id":"53770f7f1fa28a08f4e35aa2cf9902bbc196d9c6"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"bb543133d23f847e7f41fd7070e4d8fc688ad428","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":5,"id":"a87aa275_cc132643","updated":"2026-04-24 12:16:04.000000000","message":"I agree with the direction. I have a ton of suggestions inline. I\u0027m open to starting a commit series and handle the comments there gradually and land this first commit early. My goal with my comments is to handled them eventually. If you commit to an iterative process to handle them I\u0027m OK to change my -1 here to positive.","commit_id":"9d653d0b85e9aee0a2ae51e6a4dea3274e27f05c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"bd0e418b1e071510ce3c011a37e9e7b08fe2edc0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"ef90cc62_44fd6585","updated":"2026-05-14 18:03:39.000000000","message":"i will try to get back to this next week sorry there have just been other things on my plate","commit_id":"9d653d0b85e9aee0a2ae51e6a4dea3274e27f05c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"112acf4d91a8d560b483b78ebacf27bb23ae27a9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"e649a0f9_72987854","updated":"2026-05-26 17:04:24.000000000","message":"ill actully make time ot update this likely trommrow and go throuh all the comments thanks.","commit_id":"9d653d0b85e9aee0a2ae51e6a4dea3274e27f05c"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"e5bf230ab90c049dc01e3d9e79dacc47201f937b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"d6087cb8_22a36186","updated":"2026-05-29 14:10:39.000000000","message":"Also, meant to say.. I think that we should probably just merge this and agree to iterate easily from here. Unless people are doing what I did and yanking this down manually we\u0027re mostly just speculating. I suspect once this is in tree there will be a lot of \"this makes my agent do X that I don\u0027t like\" incidents.","commit_id":"6bf252d87b9492b877bdbaea0b86f059f4cd2721"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"687f202d657ff2f159b2c1f555b6d1617c1f6487","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"4e037dca_89c86816","updated":"2026-05-27 15:29:31.000000000","message":"im going stop revising this for now for feedback but i think we coudl move forward with this revsion","commit_id":"6bf252d87b9492b877bdbaea0b86f059f4cd2721"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"cf7cf58431d1b0ee92fef3919fd2933aef45c36f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"4c994f63_55e0eb92","in_reply_to":"d6087cb8_22a36186","updated":"2026-05-29 14:51:38.000000000","message":"sure let me quickly make the 2 canges you requested now and then we can proceed and iterate form there.","commit_id":"6bf252d87b9492b877bdbaea0b86f059f4cd2721"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"ec4d728078e37b4d42f00dc6920e005f09e4d470","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"2dac8dce_ae962397","updated":"2026-06-02 12:02:19.000000000","message":"I have one follow up request about requirements handling. But this patch is good to go","commit_id":"5d0bf4ba3589d729e085c43b7a63b62fb79bf921"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"d6e3b66a726485f505d074f46530922389a2661f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"2c8a1c9e_65245f0c","updated":"2026-05-29 15:10:15.000000000","message":"Let\u0027s just merge and iterate.","commit_id":"5d0bf4ba3589d729e085c43b7a63b62fb79bf921"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"d6b484df2ca23dcf55e7cbd4639820a6d987bdc9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"43cb4940_acfb7d44","updated":"2026-06-02 11:40:17.000000000","message":"recheck the graceful shutdown tests seasm to be flaky\n\n2026-05-29 16:00:24.390515 | TASK [run-graceful-shutdown-tests : Verify dest compute service is stopped after graceful shutdown]\n2026-05-29 16:03:04.576831 | controller | ERROR\n2026-05-29 16:03:04.578227 | controller | {\n2026-05-29 16:03:04.578349 | controller |   \"exception\": \"NoneType: None\\n\",\n2026-05-29 16:03:04.578462 | controller |   \"msg\": \"non-zero return code\",\n2026-05-29 16:03:04.578570 | controller |   \"rc\": 5\n2026-05-29 16:03:04.578689 | controller | }\nfailure","commit_id":"5d0bf4ba3589d729e085c43b7a63b62fb79bf921"}],"AGENTS.md":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"c9cb6b09133cfeca51e1e274d3a8cc271f19b8ae","unresolved":true,"context_lines":[{"line_number":1,"context_line":"# AGENTS.md — terse agent index (routing + gotchas)"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"Terse routing + gotchas. Agents: explore the repo directly;"},{"line_number":4,"context_line":"this file routes, it does not teach. Do not duplicate long"},{"line_number":5,"context_line":"guides here."},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"**Session memory:** Write plans, notes, and cross-session context"},{"line_number":8,"context_line":"to [`ai/`](ai/) — gitignored, never committed. Prefer `ai/tmp/`"}],"source_content_type":"text/x-markdown","patch_set":1,"id":"d7cc728a_98d59660","line":5,"range":{"start_line":1,"start_character":0,"end_line":5,"end_character":12},"updated":"2026-04-14 11:35:02.000000000","message":"i can proably shorted this as im kind fo repating myself here.","commit_id":"6a41556ea2705edd701efd1f8b79ab3db2c250e4"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"96f0e4605dc1f2e4335ad4da3bd85d80c2d7c2a2","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# AGENTS.md — terse agent index (routing + gotchas)"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"Terse routing + gotchas. Agents: explore the repo directly;"},{"line_number":4,"context_line":"this file routes, it does not teach. Do not duplicate long"},{"line_number":5,"context_line":"guides here."},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"**Session memory:** Write plans, notes, and cross-session context"},{"line_number":8,"context_line":"to [`ai/`](ai/) — gitignored, never committed. Prefer `ai/tmp/`"}],"source_content_type":"text/x-markdown","patch_set":1,"id":"82250b1b_dddcd96d","line":5,"range":{"start_line":1,"start_character":0,"end_line":5,"end_character":12},"in_reply_to":"d7cc728a_98d59660","updated":"2026-04-15 17:49:39.000000000","message":"Done","commit_id":"6a41556ea2705edd701efd1f8b79ab3db2c250e4"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"c9cb6b09133cfeca51e1e274d3a8cc271f19b8ae","unresolved":true,"context_lines":[{"line_number":25,"context_line":"| Concurrency model + threading / operator guide    | [threading.rst](doc/source/reference/threading.rst) / [concurrency.rst](doc/source/admin/concurrency.rst) |"},{"line_number":26,"context_line":"| Repo layout, doc sections (human reference)       | [doc/source/contributor/repo-overview.rst](doc/source/contributor/repo-overview.rst) |"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"## Tooling (agents get this wrong)"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"- **Tests**: Entry point is **`tox`** (e.g. `tox -e py3`,"},{"line_number":31,"context_line":"  `tox -e pep8`). Framework is stestr + unittest/testtools;"}],"source_content_type":"text/x-markdown","patch_set":1,"id":"17fc29f1_b86b1553","line":28,"range":{"start_line":28,"start_character":11,"end_line":28,"end_character":34},"updated":"2026-04-14 11:35:02.000000000","message":"i shoudl also remove these \"comments\" they dont add anything","commit_id":"6a41556ea2705edd701efd1f8b79ab3db2c250e4"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"f000af3520c5324c861471dfd04a0d71e10a1262","unresolved":true,"context_lines":[{"line_number":25,"context_line":"| Concurrency model + threading / operator guide    | [threading.rst](doc/source/reference/threading.rst) / [concurrency.rst](doc/source/admin/concurrency.rst) |"},{"line_number":26,"context_line":"| Repo layout, doc sections (human reference)       | [doc/source/contributor/repo-overview.rst](doc/source/contributor/repo-overview.rst) |"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"## Tooling (agents get this wrong)"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"- **Tests**: Entry point is **`tox`** (e.g. `tox -e py3`,"},{"line_number":31,"context_line":"  `tox -e pep8`). Framework is stestr + unittest/testtools;"}],"source_content_type":"text/x-markdown","patch_set":1,"id":"1b13cf4e_b2da424b","line":28,"range":{"start_line":28,"start_character":11,"end_line":28,"end_character":34},"in_reply_to":"17fc29f1_b86b1553","updated":"2026-04-14 18:37:17.000000000","message":"They make me feel better 😉\n\nBut yeah, probably should remove them.","commit_id":"6a41556ea2705edd701efd1f8b79ab3db2c250e4"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"96f0e4605dc1f2e4335ad4da3bd85d80c2d7c2a2","unresolved":false,"context_lines":[{"line_number":25,"context_line":"| Concurrency model + threading / operator guide    | [threading.rst](doc/source/reference/threading.rst) / [concurrency.rst](doc/source/admin/concurrency.rst) |"},{"line_number":26,"context_line":"| Repo layout, doc sections (human reference)       | [doc/source/contributor/repo-overview.rst](doc/source/contributor/repo-overview.rst) |"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"## Tooling (agents get this wrong)"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"- **Tests**: Entry point is **`tox`** (e.g. `tox -e py3`,"},{"line_number":31,"context_line":"  `tox -e pep8`). Framework is stestr + unittest/testtools;"}],"source_content_type":"text/x-markdown","patch_set":1,"id":"d864ba08_546ce3fa","line":28,"range":{"start_line":28,"start_character":11,"end_line":28,"end_character":34},"in_reply_to":"1b13cf4e_b2da424b","updated":"2026-04-15 17:49:39.000000000","message":"Done","commit_id":"6a41556ea2705edd701efd1f8b79ab3db2c250e4"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"f000af3520c5324c861471dfd04a0d71e10a1262","unresolved":true,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":"- **Tests**: Entry point is **`tox`** (e.g. `tox -e py3`,"},{"line_number":31,"context_line":"  `tox -e pep8`). Framework is stestr + unittest/testtools;"},{"line_number":32,"context_line":"  do **not** use pytest. Details in [HACKING.rst](HACKING.rst)."},{"line_number":33,"context_line":"- **tox missing**: Use `uvx tox ...` or `pipx run tox -- ...`."},{"line_number":34,"context_line":"- **Concurrency**: Do not introduce asyncio or new eventlet"},{"line_number":35,"context_line":"  usage. See [threading.rst](doc/source/reference/threading.rst)."}],"source_content_type":"text/x-markdown","patch_set":1,"id":"bdc45d7b_d3d2f192","line":32,"updated":"2026-04-14 18:37:17.000000000","message":"++ I keep having to tell mine this","commit_id":"6a41556ea2705edd701efd1f8b79ab3db2c250e4"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"96f0e4605dc1f2e4335ad4da3bd85d80c2d7c2a2","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":"- **Tests**: Entry point is **`tox`** (e.g. `tox -e py3`,"},{"line_number":31,"context_line":"  `tox -e pep8`). Framework is stestr + unittest/testtools;"},{"line_number":32,"context_line":"  do **not** use pytest. Details in [HACKING.rst](HACKING.rst)."},{"line_number":33,"context_line":"- **tox missing**: Use `uvx tox ...` or `pipx run tox -- ...`."},{"line_number":34,"context_line":"- **Concurrency**: Do not introduce asyncio or new eventlet"},{"line_number":35,"context_line":"  usage. See [threading.rst](doc/source/reference/threading.rst)."}],"source_content_type":"text/x-markdown","patch_set":1,"id":"eb4a4b16_c4ac729d","line":32,"in_reply_to":"bdc45d7b_d3d2f192","updated":"2026-04-15 17:49:39.000000000","message":"Acknowledged","commit_id":"6a41556ea2705edd701efd1f8b79ab3db2c250e4"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"c9cb6b09133cfeca51e1e274d3a8cc271f19b8ae","unresolved":true,"context_lines":[{"line_number":37,"context_line":"  `setuptools-scm`. Declare deps in `requirements.txt` /"},{"line_number":38,"context_line":"  `test-requirements.txt`."},{"line_number":39,"context_line":"- **Review**: Upstream is **Gerrit** (not GitHub PRs). Series"},{"line_number":40,"context_line":"  are always **unsquashed**; each commit must be internally"},{"line_number":41,"context_line":"  correct for Zuul."},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"## Commit trailers (OpenStack / this repo)"},{"line_number":44,"context_line":""}],"source_content_type":"text/x-markdown","patch_set":1,"id":"e8f420c4_321889ae","line":41,"range":{"start_line":40,"start_character":49,"end_line":41,"end_character":19},"updated":"2026-04-14 11:35:02.000000000","message":"pershap\n\n`indepenently correct`.\n\nzuul is not really imporant on its own. \n\nits more the fact that we are usign gating ci without a squash as our workflow that need to be highlight as some agent relally like puting fixes at the end if you dont tell it this.","commit_id":"6a41556ea2705edd701efd1f8b79ab3db2c250e4"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"96f0e4605dc1f2e4335ad4da3bd85d80c2d7c2a2","unresolved":false,"context_lines":[{"line_number":37,"context_line":"  `setuptools-scm`. Declare deps in `requirements.txt` /"},{"line_number":38,"context_line":"  `test-requirements.txt`."},{"line_number":39,"context_line":"- **Review**: Upstream is **Gerrit** (not GitHub PRs). Series"},{"line_number":40,"context_line":"  are always **unsquashed**; each commit must be internally"},{"line_number":41,"context_line":"  correct for Zuul."},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"## Commit trailers (OpenStack / this repo)"},{"line_number":44,"context_line":""}],"source_content_type":"text/x-markdown","patch_set":1,"id":"4466c630_843105f8","line":41,"range":{"start_line":40,"start_character":49,"end_line":41,"end_character":19},"in_reply_to":"006ccab7_974cf13f","updated":"2026-04-15 17:49:39.000000000","message":"Done","commit_id":"6a41556ea2705edd701efd1f8b79ab3db2c250e4"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"f000af3520c5324c861471dfd04a0d71e10a1262","unresolved":true,"context_lines":[{"line_number":37,"context_line":"  `setuptools-scm`. Declare deps in `requirements.txt` /"},{"line_number":38,"context_line":"  `test-requirements.txt`."},{"line_number":39,"context_line":"- **Review**: Upstream is **Gerrit** (not GitHub PRs). Series"},{"line_number":40,"context_line":"  are always **unsquashed**; each commit must be internally"},{"line_number":41,"context_line":"  correct for Zuul."},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"## Commit trailers (OpenStack / this repo)"},{"line_number":44,"context_line":""}],"source_content_type":"text/x-markdown","patch_set":1,"id":"006ccab7_974cf13f","line":41,"range":{"start_line":40,"start_character":49,"end_line":41,"end_character":19},"in_reply_to":"e8f420c4_321889ae","updated":"2026-04-14 18:37:17.000000000","message":"Or \"independently testable\"\n\nPersonally I never (ever) want agents doing any \"write\" operations to my local git. That means no git commits, etc. I dunno how others feel but I\u0027d be happy to have something similar here to further dissuade agents from doing things that might be GitHub or Gerrit conventions entirely.","commit_id":"6a41556ea2705edd701efd1f8b79ab3db2c250e4"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"f000af3520c5324c861471dfd04a0d71e10a1262","unresolved":true,"context_lines":[{"line_number":54,"context_line":"  when rewording subjects."},{"line_number":55,"context_line":"- Subject: imperative, ~50 chars, no trailing period;"},{"line_number":56,"context_line":"  body \u003c\u003d72 cols; explain *why*. ASCII-safe characters only"},{"line_number":57,"context_line":"  (use \u003c\u003d, \u003e\u003d, ..., -- not Unicode equivalents)."}],"source_content_type":"text/x-markdown","patch_set":1,"id":"8c497705_e86dce43","line":57,"updated":"2026-04-14 18:37:17.000000000","message":"Er, I guess you don\u0027t feel the same way 😉\n\nI\u0027d have to see how this interacts, but I definitely would not want my local agent to read this and think that it can do git commits for me...","commit_id":"6a41556ea2705edd701efd1f8b79ab3db2c250e4"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"2d9dc316dcd21b80d90c3b6011e76fcc610dfafc","unresolved":true,"context_lines":[{"line_number":54,"context_line":"  when rewording subjects."},{"line_number":55,"context_line":"- Subject: imperative, ~50 chars, no trailing period;"},{"line_number":56,"context_line":"  body \u003c\u003d72 cols; explain *why*. ASCII-safe characters only"},{"line_number":57,"context_line":"  (use \u003c\u003d, \u003e\u003d, ..., -- not Unicode equivalents)."}],"source_content_type":"text/x-markdown","patch_set":1,"id":"a9e37068_e4df20e1","line":57,"in_reply_to":"8c497705_e86dce43","updated":"2026-04-14 20:50:36.000000000","message":"this shoudl not prompt it to commit but we could make that more explicit.\n\nin general i have not had agent commit when i have not explcity asked it too.\ni say in general as i have found the compose model in cusor specificly composer 2 is a bit over eager to do things. claude/gpt model don\u0027t commit in my experince unless you tell them too. we coudl add a note to not commit unless asked explcity howver.\n\ni always use plan mode and in that i general descibe the workflow i want it to do.\n\ni.e. \n\"\"\"\ndo an interactive rebase of the current branch  agaisnt origin master and fix up any merge conflict then verify it with `uvx tox -e pep8,py3` before prociedign to the next commit.\n\"\"\"\nso i let it do git operation but i tend to tell it which ones and when.","commit_id":"6a41556ea2705edd701efd1f8b79ab3db2c250e4"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"96f0e4605dc1f2e4335ad4da3bd85d80c2d7c2a2","unresolved":false,"context_lines":[{"line_number":54,"context_line":"  when rewording subjects."},{"line_number":55,"context_line":"- Subject: imperative, ~50 chars, no trailing period;"},{"line_number":56,"context_line":"  body \u003c\u003d72 cols; explain *why*. ASCII-safe characters only"},{"line_number":57,"context_line":"  (use \u003c\u003d, \u003e\u003d, ..., -- not Unicode equivalents)."}],"source_content_type":"text/x-markdown","patch_set":1,"id":"be6d9b83_c6f05183","line":57,"in_reply_to":"a9e37068_e4df20e1","updated":"2026-04-15 17:49:39.000000000","message":"https://review.opendev.org/c/openstack/nova/+/984540/3/AGENTS.md#34 above i think will now approrely guard the git operations","commit_id":"6a41556ea2705edd701efd1f8b79ab3db2c250e4"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"1667bd03461d27830fcda5ec378f3750b2971b43","unresolved":true,"context_lines":[{"line_number":5,"context_line":"**Session memory:** Write plans, notes, and ephemeral files to `ai/`"},{"line_number":6,"context_line":"(gitignored). Prefer `ai/tmp/` over the system temp directory."},{"line_number":7,"context_line":""},{"line_number":8,"context_line":"**Local overlay:** `ai/AGENTS.md` takes precedence over this file."},{"line_number":9,"context_line":"Use it for local tweaks and overrides."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"**When planning**, read these to understand deps and tooling:"},{"line_number":12,"context_line":"`pyproject.toml` · `tox.ini` · `.pre-commit-config.yaml` ·"}],"source_content_type":"text/x-markdown","patch_set":5,"id":"d7861292_b1a377a0","line":9,"range":{"start_line":8,"start_character":0,"end_line":9,"end_character":38},"updated":"2026-04-15 21:00:52.000000000","message":"...\n\nso the git ignore hides this form the glob tools in cursor and opencode \nso they will not read it unlike claude code which does.\n\ni have tried a few workaround but the only one that i think will be relibale is\nto remove this entirly and jsut use your userlevel CLAUDE.md/AGENTS.md for local perferneces.\n\n\nfor claude code they support createing CLAUDE.local.md in the repo and git ignoreing it so we can do that for that tool\nhttps://code.claude.com/docs/en/claude-directory#file-reference\n\nopencode supprot AGENTS.md at the project root \nhttps://opencode.ai/docs/rules/#project\nor you user folder ~/.config/opencode/AGENTS.md\nbut it will not activly follow @ refnece or instuction to read a file in AGENTS.md\nso i cannot force it to read ai/agents.md\nand there is no AGENTS.local.md\nhttps://opencode.ai/docs/rules/#claude-code-compatibility\n\ncusor also does not follow it becasue of the gitignore but i was laready giginoring its rules files which means you coudl jsut add a rule yourself\n\nare folks ok with me instead just documenting that you shoudl use your agent native way to express localy overrieds? be that at the user level or an AGENTS.md one level above or below the root.\n\ni was testing this by asking the tool to speak to me in irish and only claude actully did it.\n\ni coudl get open code to do it if i explcity asked it to follow the instuciton in the agents.md in the ai folder and similarly i could get cursor to do it but if this does not just work out of the box there is no point in trying to support it \n\nthe point of this scafold is to have somethign that agents alwasy follow before they act in this repo.","commit_id":"9d653d0b85e9aee0a2ae51e6a4dea3274e27f05c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"564da714f5248f2457f6266826c46dd1b2e5a181","unresolved":false,"context_lines":[{"line_number":5,"context_line":"**Session memory:** Write plans, notes, and ephemeral files to `ai/`"},{"line_number":6,"context_line":"(gitignored). Prefer `ai/tmp/` over the system temp directory."},{"line_number":7,"context_line":""},{"line_number":8,"context_line":"**Local overlay:** `ai/AGENTS.md` takes precedence over this file."},{"line_number":9,"context_line":"Use it for local tweaks and overrides."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"**When planning**, read these to understand deps and tooling:"},{"line_number":12,"context_line":"`pyproject.toml` · `tox.ini` · `.pre-commit-config.yaml` ·"}],"source_content_type":"text/x-markdown","patch_set":5,"id":"64e6d007_99267184","line":9,"range":{"start_line":8,"start_character":0,"end_line":9,"end_character":38},"in_reply_to":"09ed5ad2_71fabbd9","updated":"2026-05-27 14:43:03.000000000","message":"Done","commit_id":"9d653d0b85e9aee0a2ae51e6a4dea3274e27f05c"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"48e5600537f14f3ad760fe611ceb4ea4c1abfa1f","unresolved":true,"context_lines":[{"line_number":5,"context_line":"**Session memory:** Write plans, notes, and ephemeral files to `ai/`"},{"line_number":6,"context_line":"(gitignored). Prefer `ai/tmp/` over the system temp directory."},{"line_number":7,"context_line":""},{"line_number":8,"context_line":"**Local overlay:** `ai/AGENTS.md` takes precedence over this file."},{"line_number":9,"context_line":"Use it for local tweaks and overrides."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"**When planning**, read these to understand deps and tooling:"},{"line_number":12,"context_line":"`pyproject.toml` · `tox.ini` · `.pre-commit-config.yaml` ·"}],"source_content_type":"text/x-markdown","patch_set":5,"id":"fad386d7_6bf9a9ec","line":9,"range":{"start_line":8,"start_character":0,"end_line":9,"end_character":38},"in_reply_to":"d7861292_b1a377a0","updated":"2026-04-16 14:50:27.000000000","message":"Okay with removing the ai/ from gitignore or removing this instruction? I\u0027d rather the former, FWIW. I have lots of un-ignored garbage in my tree so I don\u0027t care about one more thing and I guess it seems useful to have a per-project override specified, with ordering of importance.","commit_id":"9d653d0b85e9aee0a2ae51e6a4dea3274e27f05c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"eb9562dd64f0a3fd2ac82fd1b72b4c9af7cf3f27","unresolved":true,"context_lines":[{"line_number":5,"context_line":"**Session memory:** Write plans, notes, and ephemeral files to `ai/`"},{"line_number":6,"context_line":"(gitignored). Prefer `ai/tmp/` over the system temp directory."},{"line_number":7,"context_line":""},{"line_number":8,"context_line":"**Local overlay:** `ai/AGENTS.md` takes precedence over this file."},{"line_number":9,"context_line":"Use it for local tweaks and overrides."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"**When planning**, read these to understand deps and tooling:"},{"line_number":12,"context_line":"`pyproject.toml` · `tox.ini` · `.pre-commit-config.yaml` ·"}],"source_content_type":"text/x-markdown","patch_set":5,"id":"09ed5ad2_71fabbd9","line":9,"range":{"start_line":8,"start_character":0,"end_line":9,"end_character":38},"in_reply_to":"fad386d7_6bf9a9ec","updated":"2026-04-16 15:05:12.000000000","message":"i was thinking of removign the instruction\n\nwhat i have learned is claude basiclly evals the CLAUDE.md or agnets md if you make it a symlink adn there for will process instcution like this.\n\ni belive opencode ,droid and cursor instead jsut load it as data into the context window\nso they wont follow instruction in it and read files unless the llm decised a tool call is requried that \"looks for context in the repo\"\n\nbut i also saw that wehn they tried to use the glob tool which is used for relite paths that uses gitignore to prune the search space.\n\nill retest with just the removal of the git ignore with the tools i have aviabel to me and report back if removing api form the gitignore is enouch.\nif it still does not work then that woudl basiclly confirm that the other tools are not \"evaling\" i.e. processing the instuctions from the agent md adn are just blindly loading it.\n\nif does not work in a portabel way after i remove the gitignore and test \nill just remove all refences to teh ai dir form this proposal.","commit_id":"9d653d0b85e9aee0a2ae51e6a4dea3274e27f05c"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"bb543133d23f847e7f41fd7070e4d8fc688ad428","unresolved":true,"context_lines":[{"line_number":20,"context_line":"- Test conventions, fixtures: [HACKING.rst](HACKING.rst) / [doc/source/contributor/testing.rst](doc/source/contributor/testing.rst)"},{"line_number":21,"context_line":"- Agentic coding conventions, agent context files: [doc/source/contributor/agentic-coding.rst](doc/source/contributor/agentic-coding.rst)"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"## Tooling"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"- **Tests**: Entry point is **`tox`** (e.g. `tox -e py3`, `tox -e pep8`)."},{"line_number":26,"context_line":"  Framework is stestr + unittest/testtools/oslo.test;"}],"source_content_type":"text/x-markdown","patch_set":5,"id":"5d5b8f47_8f798188","line":23,"updated":"2026-04-24 12:16:04.000000000","message":"It feels like this section is a summary of our other docs in our tree (our could be). Is this summary something we need to carry to help the tool? Or can we make our existing docs more focused. Maybe the contributor guide can handle this summary for humans as well.","commit_id":"9d653d0b85e9aee0a2ae51e6a4dea3274e27f05c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"564da714f5248f2457f6266826c46dd1b2e5a181","unresolved":true,"context_lines":[{"line_number":20,"context_line":"- Test conventions, fixtures: [HACKING.rst](HACKING.rst) / [doc/source/contributor/testing.rst](doc/source/contributor/testing.rst)"},{"line_number":21,"context_line":"- Agentic coding conventions, agent context files: [doc/source/contributor/agentic-coding.rst](doc/source/contributor/agentic-coding.rst)"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"## Tooling"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"- **Tests**: Entry point is **`tox`** (e.g. `tox -e py3`, `tox -e pep8`)."},{"line_number":26,"context_line":"  Framework is stestr + unittest/testtools/oslo.test;"}],"source_content_type":"text/x-markdown","patch_set":5,"id":"7777ad07_b073a002","line":23,"in_reply_to":"5d5b8f47_8f798188","updated":"2026-05-27 14:43:03.000000000","message":"i have tried to improve this in the documetion directly as well.\nhttps://review.opendev.org/c/openstack/nova/+/984540/5..7/doc/source/contributor/index.rst\n\nfor now i think having the routing here is still valudabel for the tool but\nit might not be needed eventully.\n\nim mostly sturign the routing index like https://llmstxt.org/\nthis is what FastHTML\u0027s llms.txt looks like https://www.fastht.ml/docs/llms.txt\n\nthe primay delta is im take a local first approch routing to the files in the repo rather then pointing tat the rendered docs as i dont want the agents to hit docs.openstack.org.\n\nbut the routing layer is effectivly my version fo llms.txt","commit_id":"9d653d0b85e9aee0a2ae51e6a4dea3274e27f05c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"0037cf4701ccfeb8d0ad94366655a0f139f5a410","unresolved":false,"context_lines":[{"line_number":20,"context_line":"- Test conventions, fixtures: [HACKING.rst](HACKING.rst) / [doc/source/contributor/testing.rst](doc/source/contributor/testing.rst)"},{"line_number":21,"context_line":"- Agentic coding conventions, agent context files: [doc/source/contributor/agentic-coding.rst](doc/source/contributor/agentic-coding.rst)"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"## Tooling"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"- **Tests**: Entry point is **`tox`** (e.g. `tox -e py3`, `tox -e pep8`)."},{"line_number":26,"context_line":"  Framework is stestr + unittest/testtools/oslo.test;"}],"source_content_type":"text/x-markdown","patch_set":5,"id":"5bee1f08_0925361a","line":23,"in_reply_to":"7777ad07_b073a002","updated":"2026-05-29 14:44:00.000000000","message":"ill resolve this for now but feel free to repoen just making this eiaser to revew","commit_id":"9d653d0b85e9aee0a2ae51e6a4dea3274e27f05c"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"bb543133d23f847e7f41fd7070e4d8fc688ad428","unresolved":true,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":"## Tooling"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"- **Tests**: Entry point is **`tox`** (e.g. `tox -e py3`, `tox -e pep8`)."},{"line_number":26,"context_line":"  Framework is stestr + unittest/testtools/oslo.test;"},{"line_number":27,"context_line":"  do **not** use pytest."},{"line_number":28,"context_line":"- **tox missing**: Use `uvx tox ...` or `pipx run tox -- ...`."},{"line_number":29,"context_line":"- **Concurrency**: Do not introduce asyncio or new eventlet usage."},{"line_number":30,"context_line":"  review the threading and concurrency doc when needed."}],"source_content_type":"text/x-markdown","patch_set":5,"id":"396dcba8_75f2f213","line":27,"range":{"start_line":25,"start_character":0,"end_line":27,"end_character":24},"updated":"2026-04-24 12:16:04.000000000","message":"Is this covered in our Test convenctions doc? Can we cover it there?","commit_id":"9d653d0b85e9aee0a2ae51e6a4dea3274e27f05c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"bd0e418b1e071510ce3c011a37e9e7b08fe2edc0","unresolved":true,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":"## Tooling"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"- **Tests**: Entry point is **`tox`** (e.g. `tox -e py3`, `tox -e pep8`)."},{"line_number":26,"context_line":"  Framework is stestr + unittest/testtools/oslo.test;"},{"line_number":27,"context_line":"  do **not** use pytest."},{"line_number":28,"context_line":"- **tox missing**: Use `uvx tox ...` or `pipx run tox -- ...`."},{"line_number":29,"context_line":"- **Concurrency**: Do not introduce asyncio or new eventlet usage."},{"line_number":30,"context_line":"  review the threading and concurrency doc when needed."}],"source_content_type":"text/x-markdown","patch_set":5,"id":"e8aca1aa_9dece08e","line":27,"range":{"start_line":25,"start_character":0,"end_line":27,"end_character":24},"in_reply_to":"396dcba8_75f2f213","updated":"2026-05-14 18:03:39.000000000","message":"the no pytest rule i would like to keep in the agents.md because it really want to use it but this is mostly covered in our docs or hacking.rst so we can likel remove that","commit_id":"9d653d0b85e9aee0a2ae51e6a4dea3274e27f05c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"0037cf4701ccfeb8d0ad94366655a0f139f5a410","unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":"## Tooling"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"- **Tests**: Entry point is **`tox`** (e.g. `tox -e py3`, `tox -e pep8`)."},{"line_number":26,"context_line":"  Framework is stestr + unittest/testtools/oslo.test;"},{"line_number":27,"context_line":"  do **not** use pytest."},{"line_number":28,"context_line":"- **tox missing**: Use `uvx tox ...` or `pipx run tox -- ...`."},{"line_number":29,"context_line":"- **Concurrency**: Do not introduce asyncio or new eventlet usage."},{"line_number":30,"context_line":"  review the threading and concurrency doc when needed."}],"source_content_type":"text/x-markdown","patch_set":5,"id":"866f06a6_058c88fa","line":27,"range":{"start_line":25,"start_character":0,"end_line":27,"end_character":24},"in_reply_to":"40c683c5_0119b1d9","updated":"2026-05-29 14:44:00.000000000","message":"Acknowledged","commit_id":"9d653d0b85e9aee0a2ae51e6a4dea3274e27f05c"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"89347dd8a46bd3d3146384afb93613a5e98b6af1","unresolved":true,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":"## Tooling"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"- **Tests**: Entry point is **`tox`** (e.g. `tox -e py3`, `tox -e pep8`)."},{"line_number":26,"context_line":"  Framework is stestr + unittest/testtools/oslo.test;"},{"line_number":27,"context_line":"  do **not** use pytest."},{"line_number":28,"context_line":"- **tox missing**: Use `uvx tox ...` or `pipx run tox -- ...`."},{"line_number":29,"context_line":"- **Concurrency**: Do not introduce asyncio or new eventlet usage."},{"line_number":30,"context_line":"  review the threading and concurrency doc when needed."}],"source_content_type":"text/x-markdown","patch_set":5,"id":"40c683c5_0119b1d9","line":27,"range":{"start_line":25,"start_character":0,"end_line":27,"end_character":24},"in_reply_to":"e8aca1aa_9dece08e","updated":"2026-05-14 21:09:42.000000000","message":"Yes, same experience. Claude specifically seems to always want to use pytest first, and when it doesn\u0027t work, it actually reads something else and does the right thing. So much that I\u0027ve just started ending session-starting prompts with \"...and run tests with ...\"","commit_id":"9d653d0b85e9aee0a2ae51e6a4dea3274e27f05c"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"bb543133d23f847e7f41fd7070e4d8fc688ad428","unresolved":true,"context_lines":[{"line_number":25,"context_line":"- **Tests**: Entry point is **`tox`** (e.g. `tox -e py3`, `tox -e pep8`)."},{"line_number":26,"context_line":"  Framework is stestr + unittest/testtools/oslo.test;"},{"line_number":27,"context_line":"  do **not** use pytest."},{"line_number":28,"context_line":"- **tox missing**: Use `uvx tox ...` or `pipx run tox -- ...`."},{"line_number":29,"context_line":"- **Concurrency**: Do not introduce asyncio or new eventlet usage."},{"line_number":30,"context_line":"  review the threading and concurrency doc when needed."},{"line_number":31,"context_line":"- **Packaging**: **pbr** manages version/deps; **never**"}],"source_content_type":"text/x-markdown","patch_set":5,"id":"1f3ad789_a5b7b448","line":28,"updated":"2026-04-24 12:16:04.000000000","message":"ditto. Or maybe contributor guide about how to setup a dev environment?\nAlso it is funny that we declare in this doc to only use read only git commands but then instruct the tool to feel free to install dependencies on the machine.","commit_id":"9d653d0b85e9aee0a2ae51e6a4dea3274e27f05c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"112acf4d91a8d560b483b78ebacf27bb23ae27a9","unresolved":true,"context_lines":[{"line_number":25,"context_line":"- **Tests**: Entry point is **`tox`** (e.g. `tox -e py3`, `tox -e pep8`)."},{"line_number":26,"context_line":"  Framework is stestr + unittest/testtools/oslo.test;"},{"line_number":27,"context_line":"  do **not** use pytest."},{"line_number":28,"context_line":"- **tox missing**: Use `uvx tox ...` or `pipx run tox -- ...`."},{"line_number":29,"context_line":"- **Concurrency**: Do not introduce asyncio or new eventlet usage."},{"line_number":30,"context_line":"  review the threading and concurrency doc when needed."},{"line_number":31,"context_line":"- **Packaging**: **pbr** manages version/deps; **never**"}],"source_content_type":"text/x-markdown","patch_set":5,"id":"40e3a0e5_9f673d61","line":28,"in_reply_to":"16e99756_0b87f35c","updated":"2026-05-26 17:04:24.000000000","message":"hum ok that was not what i was expecting but sure let me strip this down to an even more minimal config and we can consider readding this or some other guidance later\n\n\nwith https://opendev.org/openstack/agentic-workflows/src/commit/7833aba308c6adaf61689a1b3edaba11001a7f80/.agents/skills/commit-msg-refiner/SKILL.md i think i can remove all the git instactusion as well more or less\n\ni can keep the proabtion on commiting unless expclity asked but most of the other info can be removed","commit_id":"9d653d0b85e9aee0a2ae51e6a4dea3274e27f05c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"bd0e418b1e071510ce3c011a37e9e7b08fe2edc0","unresolved":true,"context_lines":[{"line_number":25,"context_line":"- **Tests**: Entry point is **`tox`** (e.g. `tox -e py3`, `tox -e pep8`)."},{"line_number":26,"context_line":"  Framework is stestr + unittest/testtools/oslo.test;"},{"line_number":27,"context_line":"  do **not** use pytest."},{"line_number":28,"context_line":"- **tox missing**: Use `uvx tox ...` or `pipx run tox -- ...`."},{"line_number":29,"context_line":"- **Concurrency**: Do not introduce asyncio or new eventlet usage."},{"line_number":30,"context_line":"  review the threading and concurrency doc when needed."},{"line_number":31,"context_line":"- **Packaging**: **pbr** manages version/deps; **never**"}],"source_content_type":"text/x-markdown","patch_set":5,"id":"e0c07fe0_19672ba6","line":28,"in_reply_to":"1f3ad789_a5b7b448","updated":"2026-05-14 18:03:39.000000000","message":"ya this is a personal worklow thing to a degree.\noutside of my devstack vms i never have tox installed system wide and i either alwasy use a venv or for thet last 18 month use uvx to provide it\nstephen i know used to use pipx but that is enough of a nudge to get llms to mostly \"just work\" across the 4 ro 5 diffent envs i have been testing it in.","commit_id":"9d653d0b85e9aee0a2ae51e6a4dea3274e27f05c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"564da714f5248f2457f6266826c46dd1b2e5a181","unresolved":false,"context_lines":[{"line_number":25,"context_line":"- **Tests**: Entry point is **`tox`** (e.g. `tox -e py3`, `tox -e pep8`)."},{"line_number":26,"context_line":"  Framework is stestr + unittest/testtools/oslo.test;"},{"line_number":27,"context_line":"  do **not** use pytest."},{"line_number":28,"context_line":"- **tox missing**: Use `uvx tox ...` or `pipx run tox -- ...`."},{"line_number":29,"context_line":"- **Concurrency**: Do not introduce asyncio or new eventlet usage."},{"line_number":30,"context_line":"  review the threading and concurrency doc when needed."},{"line_number":31,"context_line":"- **Packaging**: **pbr** manages version/deps; **never**"}],"source_content_type":"text/x-markdown","patch_set":5,"id":"d6f670ce_9b3d6540","line":28,"in_reply_to":"40e3a0e5_9f673d61","updated":"2026-05-27 14:43:03.000000000","message":"i think the current workdign adress this.\n\ni tired ```can you run the pep8 checks on pyton 3.12``` in\nclaude, pi, codex, opencode and cursor\n\nthey all tried tox first and then fellback to uvx\nhttps://paste.opendev.org/show/bKNWJC47mKk1hbWeJTw7/","commit_id":"9d653d0b85e9aee0a2ae51e6a4dea3274e27f05c"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"d26e6f17025da3b897a49ba9ce1407fd7904397d","unresolved":true,"context_lines":[{"line_number":25,"context_line":"- **Tests**: Entry point is **`tox`** (e.g. `tox -e py3`, `tox -e pep8`)."},{"line_number":26,"context_line":"  Framework is stestr + unittest/testtools/oslo.test;"},{"line_number":27,"context_line":"  do **not** use pytest."},{"line_number":28,"context_line":"- **tox missing**: Use `uvx tox ...` or `pipx run tox -- ...`."},{"line_number":29,"context_line":"- **Concurrency**: Do not introduce asyncio or new eventlet usage."},{"line_number":30,"context_line":"  review the threading and concurrency doc when needed."},{"line_number":31,"context_line":"- **Packaging**: **pbr** manages version/deps; **never**"}],"source_content_type":"text/x-markdown","patch_set":5,"id":"16e99756_0b87f35c","line":28,"in_reply_to":"9877d278_fc4ce1ac","updated":"2026-05-26 16:44:29.000000000","message":"BTW, I yanked this down manually today and even though `tox` is installed (by my preferred method), this causes claude to always try to run it via uv (which is not installed). Can we remove the `uvx` and `pipx` prefixes here? I think it\u0027s fine to assume that the user has a reasonable dev environment setup and that tox is reachable in `$PATH` however they want that to happen.","commit_id":"9d653d0b85e9aee0a2ae51e6a4dea3274e27f05c"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"89347dd8a46bd3d3146384afb93613a5e98b6af1","unresolved":true,"context_lines":[{"line_number":25,"context_line":"- **Tests**: Entry point is **`tox`** (e.g. `tox -e py3`, `tox -e pep8`)."},{"line_number":26,"context_line":"  Framework is stestr + unittest/testtools/oslo.test;"},{"line_number":27,"context_line":"  do **not** use pytest."},{"line_number":28,"context_line":"- **tox missing**: Use `uvx tox ...` or `pipx run tox -- ...`."},{"line_number":29,"context_line":"- **Concurrency**: Do not introduce asyncio or new eventlet usage."},{"line_number":30,"context_line":"  review the threading and concurrency doc when needed."},{"line_number":31,"context_line":"- **Packaging**: **pbr** manages version/deps; **never**"}],"source_content_type":"text/x-markdown","patch_set":5,"id":"9877d278_fc4ce1ac","line":28,"in_reply_to":"e0c07fe0_19672ba6","updated":"2026-05-14 21:09:42.000000000","message":"The git commands thing is probably from me. I have been surprised multiple times by agents willing to commit, rebase, and otherwise eff up my local tree. I can fix a pip install a lot easier than I can unwind a reflog by several steps.","commit_id":"9d653d0b85e9aee0a2ae51e6a4dea3274e27f05c"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"bb543133d23f847e7f41fd7070e4d8fc688ad428","unresolved":true,"context_lines":[{"line_number":26,"context_line":"  Framework is stestr + unittest/testtools/oslo.test;"},{"line_number":27,"context_line":"  do **not** use pytest."},{"line_number":28,"context_line":"- **tox missing**: Use `uvx tox ...` or `pipx run tox -- ...`."},{"line_number":29,"context_line":"- **Concurrency**: Do not introduce asyncio or new eventlet usage."},{"line_number":30,"context_line":"  review the threading and concurrency doc when needed."},{"line_number":31,"context_line":"- **Packaging**: **pbr** manages version/deps; **never**"},{"line_number":32,"context_line":"  `setuptools-scm`. Declare deps in `requirements.txt`/`test-requirements.txt`."},{"line_number":33,"context_line":"- **Review**: Upstream is **Gerrit** (not GitHub PRs). Series are always"}],"source_content_type":"text/x-markdown","patch_set":5,"id":"ed51c4a3_2edb5c5a","line":30,"range":{"start_line":29,"start_character":0,"end_line":30,"end_character":55},"updated":"2026-04-24 12:16:04.000000000","message":"* Can we state this in out concurrency doc?\n* Can we add deterministic checks to prevent adding such a thing? Like a set of hacking rules maybe about import eventlet (and it variants)?","commit_id":"9d653d0b85e9aee0a2ae51e6a4dea3274e27f05c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"564da714f5248f2457f6266826c46dd1b2e5a181","unresolved":false,"context_lines":[{"line_number":26,"context_line":"  Framework is stestr + unittest/testtools/oslo.test;"},{"line_number":27,"context_line":"  do **not** use pytest."},{"line_number":28,"context_line":"- **tox missing**: Use `uvx tox ...` or `pipx run tox -- ...`."},{"line_number":29,"context_line":"- **Concurrency**: Do not introduce asyncio or new eventlet usage."},{"line_number":30,"context_line":"  review the threading and concurrency doc when needed."},{"line_number":31,"context_line":"- **Packaging**: **pbr** manages version/deps; **never**"},{"line_number":32,"context_line":"  `setuptools-scm`. Declare deps in `requirements.txt`/`test-requirements.txt`."},{"line_number":33,"context_line":"- **Review**: Upstream is **Gerrit** (not GitHub PRs). Series are always"}],"source_content_type":"text/x-markdown","patch_set":5,"id":"ba0b1441_dd7e085f","line":30,"range":{"start_line":29,"start_character":0,"end_line":30,"end_character":55},"in_reply_to":"ed51c4a3_2edb5c5a","updated":"2026-05-27 14:43:03.000000000","message":"i have added it to the doc. i have not added a determinsitic check to prevent asyncio but i think we can consider that in a follow up.\n\ni woudl like to put that out of scop of this commit for now.","commit_id":"9d653d0b85e9aee0a2ae51e6a4dea3274e27f05c"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"bb543133d23f847e7f41fd7070e4d8fc688ad428","unresolved":true,"context_lines":[{"line_number":28,"context_line":"- **tox missing**: Use `uvx tox ...` or `pipx run tox -- ...`."},{"line_number":29,"context_line":"- **Concurrency**: Do not introduce asyncio or new eventlet usage."},{"line_number":30,"context_line":"  review the threading and concurrency doc when needed."},{"line_number":31,"context_line":"- **Packaging**: **pbr** manages version/deps; **never**"},{"line_number":32,"context_line":"  `setuptools-scm`. Declare deps in `requirements.txt`/`test-requirements.txt`."},{"line_number":33,"context_line":"- **Review**: Upstream is **Gerrit** (not GitHub PRs). Series are always"},{"line_number":34,"context_line":"  **unsquashed**; each commit must be independently testable and correct."},{"line_number":35,"context_line":"- **Git**: Read-only operations (`git log`, `git diff`, `git status`) are fine."}],"source_content_type":"text/x-markdown","patch_set":5,"id":"39469236_7fdac49c","line":32,"range":{"start_line":31,"start_character":0,"end_line":32,"end_character":79},"updated":"2026-04-24 12:16:04.000000000","message":"feels like a contributor guide type of information","commit_id":"9d653d0b85e9aee0a2ae51e6a4dea3274e27f05c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"564da714f5248f2457f6266826c46dd1b2e5a181","unresolved":false,"context_lines":[{"line_number":28,"context_line":"- **tox missing**: Use `uvx tox ...` or `pipx run tox -- ...`."},{"line_number":29,"context_line":"- **Concurrency**: Do not introduce asyncio or new eventlet usage."},{"line_number":30,"context_line":"  review the threading and concurrency doc when needed."},{"line_number":31,"context_line":"- **Packaging**: **pbr** manages version/deps; **never**"},{"line_number":32,"context_line":"  `setuptools-scm`. Declare deps in `requirements.txt`/`test-requirements.txt`."},{"line_number":33,"context_line":"- **Review**: Upstream is **Gerrit** (not GitHub PRs). Series are always"},{"line_number":34,"context_line":"  **unsquashed**; each commit must be independently testable and correct."},{"line_number":35,"context_line":"- **Git**: Read-only operations (`git log`, `git diff`, `git status`) are fine."}],"source_content_type":"text/x-markdown","patch_set":5,"id":"40f9bfdc_c477a7ff","line":32,"range":{"start_line":31,"start_character":0,"end_line":32,"end_character":79},"in_reply_to":"39469236_7fdac49c","updated":"2026-05-27 14:43:03.000000000","message":"Done","commit_id":"9d653d0b85e9aee0a2ae51e6a4dea3274e27f05c"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"bb543133d23f847e7f41fd7070e4d8fc688ad428","unresolved":true,"context_lines":[{"line_number":30,"context_line":"  review the threading and concurrency doc when needed."},{"line_number":31,"context_line":"- **Packaging**: **pbr** manages version/deps; **never**"},{"line_number":32,"context_line":"  `setuptools-scm`. Declare deps in `requirements.txt`/`test-requirements.txt`."},{"line_number":33,"context_line":"- **Review**: Upstream is **Gerrit** (not GitHub PRs). Series are always"},{"line_number":34,"context_line":"  **unsquashed**; each commit must be independently testable and correct."},{"line_number":35,"context_line":"- **Git**: Read-only operations (`git log`, `git diff`, `git status`) are fine."},{"line_number":36,"context_line":"  Any mutating git operation (add, commit, reset, checkout, push, stash, merge,"}],"source_content_type":"text/x-markdown","patch_set":5,"id":"b8caed66_7cc6b693","line":33,"updated":"2026-04-24 12:16:04.000000000","message":"definitely contributor guide","commit_id":"9d653d0b85e9aee0a2ae51e6a4dea3274e27f05c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"564da714f5248f2457f6266826c46dd1b2e5a181","unresolved":false,"context_lines":[{"line_number":30,"context_line":"  review the threading and concurrency doc when needed."},{"line_number":31,"context_line":"- **Packaging**: **pbr** manages version/deps; **never**"},{"line_number":32,"context_line":"  `setuptools-scm`. Declare deps in `requirements.txt`/`test-requirements.txt`."},{"line_number":33,"context_line":"- **Review**: Upstream is **Gerrit** (not GitHub PRs). Series are always"},{"line_number":34,"context_line":"  **unsquashed**; each commit must be independently testable and correct."},{"line_number":35,"context_line":"- **Git**: Read-only operations (`git log`, `git diff`, `git status`) are fine."},{"line_number":36,"context_line":"  Any mutating git operation (add, commit, reset, checkout, push, stash, merge,"}],"source_content_type":"text/x-markdown","patch_set":5,"id":"574a463a_517ae426","line":33,"in_reply_to":"2aa73df0_0ad560a9","updated":"2026-05-27 14:43:03.000000000","message":"Done","commit_id":"9d653d0b85e9aee0a2ae51e6a4dea3274e27f05c"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"89347dd8a46bd3d3146384afb93613a5e98b6af1","unresolved":true,"context_lines":[{"line_number":30,"context_line":"  review the threading and concurrency doc when needed."},{"line_number":31,"context_line":"- **Packaging**: **pbr** manages version/deps; **never**"},{"line_number":32,"context_line":"  `setuptools-scm`. Declare deps in `requirements.txt`/`test-requirements.txt`."},{"line_number":33,"context_line":"- **Review**: Upstream is **Gerrit** (not GitHub PRs). Series are always"},{"line_number":34,"context_line":"  **unsquashed**; each commit must be independently testable and correct."},{"line_number":35,"context_line":"- **Git**: Read-only operations (`git log`, `git diff`, `git status`) are fine."},{"line_number":36,"context_line":"  Any mutating git operation (add, commit, reset, checkout, push, stash, merge,"}],"source_content_type":"text/x-markdown","patch_set":5,"id":"2aa73df0_0ad560a9","line":33,"in_reply_to":"b8caed66_7cc6b693","updated":"2026-05-14 21:09:42.000000000","message":"Agree with this and the few above.","commit_id":"9d653d0b85e9aee0a2ae51e6a4dea3274e27f05c"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"bb543133d23f847e7f41fd7070e4d8fc688ad428","unresolved":true,"context_lines":[{"line_number":32,"context_line":"  `setuptools-scm`. Declare deps in `requirements.txt`/`test-requirements.txt`."},{"line_number":33,"context_line":"- **Review**: Upstream is **Gerrit** (not GitHub PRs). Series are always"},{"line_number":34,"context_line":"  **unsquashed**; each commit must be independently testable and correct."},{"line_number":35,"context_line":"- **Git**: Read-only operations (`git log`, `git diff`, `git status`) are fine."},{"line_number":36,"context_line":"  Any mutating git operation (add, commit, reset, checkout, push, stash, merge,"},{"line_number":37,"context_line":"  branch, etc.) requires explicit user approval."},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"## Commit trailers - only apply when asked"},{"line_number":40,"context_line":""}],"source_content_type":"text/x-markdown","patch_set":5,"id":"73224f9c_6987f124","line":37,"range":{"start_line":35,"start_character":0,"end_line":37,"end_character":48},"updated":"2026-04-24 12:16:04.000000000","message":"* It seems to be duplicated with https://review.opendev.org/c/openstack/nova/+/984540/5/doc/source/contributor/agentic-coding.rst#109\n\n* Do we need to be opinionated about what a developer runs on its own machine? If the dev is OK to allow the agent to do git rebase automatically then why we are trying to limit the tool in their environment?","commit_id":"9d653d0b85e9aee0a2ae51e6a4dea3274e27f05c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"0037cf4701ccfeb8d0ad94366655a0f139f5a410","unresolved":false,"context_lines":[{"line_number":32,"context_line":"  `setuptools-scm`. Declare deps in `requirements.txt`/`test-requirements.txt`."},{"line_number":33,"context_line":"- **Review**: Upstream is **Gerrit** (not GitHub PRs). Series are always"},{"line_number":34,"context_line":"  **unsquashed**; each commit must be independently testable and correct."},{"line_number":35,"context_line":"- **Git**: Read-only operations (`git log`, `git diff`, `git status`) are fine."},{"line_number":36,"context_line":"  Any mutating git operation (add, commit, reset, checkout, push, stash, merge,"},{"line_number":37,"context_line":"  branch, etc.) requires explicit user approval."},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"## Commit trailers - only apply when asked"},{"line_number":40,"context_line":""}],"source_content_type":"text/x-markdown","patch_set":5,"id":"85fbf4ed_a786bf95","line":37,"range":{"start_line":35,"start_character":0,"end_line":37,"end_character":48},"in_reply_to":"0497daca_d3602b47","updated":"2026-05-29 14:44:00.000000000","message":"same resolveing but feel free to reopen if you think it need more updates.","commit_id":"9d653d0b85e9aee0a2ae51e6a4dea3274e27f05c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"bd0e418b1e071510ce3c011a37e9e7b08fe2edc0","unresolved":true,"context_lines":[{"line_number":32,"context_line":"  `setuptools-scm`. Declare deps in `requirements.txt`/`test-requirements.txt`."},{"line_number":33,"context_line":"- **Review**: Upstream is **Gerrit** (not GitHub PRs). Series are always"},{"line_number":34,"context_line":"  **unsquashed**; each commit must be independently testable and correct."},{"line_number":35,"context_line":"- **Git**: Read-only operations (`git log`, `git diff`, `git status`) are fine."},{"line_number":36,"context_line":"  Any mutating git operation (add, commit, reset, checkout, push, stash, merge,"},{"line_number":37,"context_line":"  branch, etc.) requires explicit user approval."},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"## Commit trailers - only apply when asked"},{"line_number":40,"context_line":""}],"source_content_type":"text/x-markdown","patch_set":5,"id":"9ac23277_027e1bbb","line":37,"range":{"start_line":35,"start_character":0,"end_line":37,"end_character":48},"in_reply_to":"73224f9c_6987f124","updated":"2026-05-14 18:03:39.000000000","message":"so i have the tool do rebases form e sometiem and that wil sill work\n\nif you tell it to do it it overried this.\n\nthis is duplciateive but dan seamed ot be concerned with the posiblity that it would do this without prompting so i prompoted it to a direct guardrail so that its alwasy loaded rather then rely on the tools to read it form the doc.\n\ni am ok with either aprpoch but i tried to keep the inital verison","commit_id":"9d653d0b85e9aee0a2ae51e6a4dea3274e27f05c"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"89347dd8a46bd3d3146384afb93613a5e98b6af1","unresolved":true,"context_lines":[{"line_number":32,"context_line":"  `setuptools-scm`. Declare deps in `requirements.txt`/`test-requirements.txt`."},{"line_number":33,"context_line":"- **Review**: Upstream is **Gerrit** (not GitHub PRs). Series are always"},{"line_number":34,"context_line":"  **unsquashed**; each commit must be independently testable and correct."},{"line_number":35,"context_line":"- **Git**: Read-only operations (`git log`, `git diff`, `git status`) are fine."},{"line_number":36,"context_line":"  Any mutating git operation (add, commit, reset, checkout, push, stash, merge,"},{"line_number":37,"context_line":"  branch, etc.) requires explicit user approval."},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"## Commit trailers - only apply when asked"},{"line_number":40,"context_line":""}],"source_content_type":"text/x-markdown","patch_set":5,"id":"dc23aa3e_34fce17d","line":37,"range":{"start_line":35,"start_character":0,"end_line":37,"end_character":48},"in_reply_to":"9ac23277_027e1bbb","updated":"2026-05-14 21:09:42.000000000","message":"Can we add \"unless instructed to do so\" maybe? Again, coming from experience being pissed off with having a commit series get modified.","commit_id":"9d653d0b85e9aee0a2ae51e6a4dea3274e27f05c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"564da714f5248f2457f6266826c46dd1b2e5a181","unresolved":true,"context_lines":[{"line_number":32,"context_line":"  `setuptools-scm`. Declare deps in `requirements.txt`/`test-requirements.txt`."},{"line_number":33,"context_line":"- **Review**: Upstream is **Gerrit** (not GitHub PRs). Series are always"},{"line_number":34,"context_line":"  **unsquashed**; each commit must be independently testable and correct."},{"line_number":35,"context_line":"- **Git**: Read-only operations (`git log`, `git diff`, `git status`) are fine."},{"line_number":36,"context_line":"  Any mutating git operation (add, commit, reset, checkout, push, stash, merge,"},{"line_number":37,"context_line":"  branch, etc.) requires explicit user approval."},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"## Commit trailers - only apply when asked"},{"line_number":40,"context_line":""}],"source_content_type":"text/x-markdown","patch_set":5,"id":"0497daca_d3602b47","line":37,"range":{"start_line":35,"start_character":0,"end_line":37,"end_character":48},"in_reply_to":"dc23aa3e_34fce17d","updated":"2026-05-27 14:43:03.000000000","message":"my experince is user instruction in the promt overrides this in general so if i ask it to commit or stage the changes even with this it will.","commit_id":"9d653d0b85e9aee0a2ae51e6a4dea3274e27f05c"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"bb543133d23f847e7f41fd7070e4d8fc688ad428","unresolved":true,"context_lines":[{"line_number":36,"context_line":"  Any mutating git operation (add, commit, reset, checkout, push, stash, merge,"},{"line_number":37,"context_line":"  branch, etc.) requires explicit user approval."},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"## Commit trailers - only apply when asked"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"- **DCO**: Every commit needs `Signed-off-by:` — use `git commit -s`."},{"line_number":42,"context_line":"- Notation: `\u003cx\u003e` \u003d required; `[x]` \u003d optional — no brackets in output."}],"source_content_type":"text/x-markdown","patch_set":5,"id":"ba83a6ec_b8895374","line":39,"updated":"2026-04-24 12:16:04.000000000","message":"contributor guide\u003e Or an openstack general how-to-write-commit-message guide? likehttps://wiki.openstack.org/wiki/GitCommitMessages","commit_id":"9d653d0b85e9aee0a2ae51e6a4dea3274e27f05c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"bd0e418b1e071510ce3c011a37e9e7b08fe2edc0","unresolved":true,"context_lines":[{"line_number":36,"context_line":"  Any mutating git operation (add, commit, reset, checkout, push, stash, merge,"},{"line_number":37,"context_line":"  branch, etc.) requires explicit user approval."},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"## Commit trailers - only apply when asked"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"- **DCO**: Every commit needs `Signed-off-by:` — use `git commit -s`."},{"line_number":42,"context_line":"- Notation: `\u003cx\u003e` \u003d required; `[x]` \u003d optional — no brackets in output."}],"source_content_type":"text/x-markdown","patch_set":5,"id":"ce39b2e0_57fce1fa","line":39,"in_reply_to":"ba83a6ec_b8895374","updated":"2026-05-14 18:03:39.000000000","message":"this i have turned into a skill so what ill do is a can add a trivial doc section for humans into our tree but going forward my \n\nhttps://opendev.org/openstack/agentic-workflows/src/commit/7833aba308c6adaf61689a1b3edaba11001a7f80/.agents/skills/commit-msg-refiner/SKILL.md\n\nwhich s under review still will entily handel this so we dont need to keep this here.","commit_id":"9d653d0b85e9aee0a2ae51e6a4dea3274e27f05c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"0037cf4701ccfeb8d0ad94366655a0f139f5a410","unresolved":false,"context_lines":[{"line_number":36,"context_line":"  Any mutating git operation (add, commit, reset, checkout, push, stash, merge,"},{"line_number":37,"context_line":"  branch, etc.) requires explicit user approval."},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"## Commit trailers - only apply when asked"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"- **DCO**: Every commit needs `Signed-off-by:` — use `git commit -s`."},{"line_number":42,"context_line":"- Notation: `\u003cx\u003e` \u003d required; `[x]` \u003d optional — no brackets in output."}],"source_content_type":"text/x-markdown","patch_set":5,"id":"5c7f8462_133046c8","line":39,"in_reply_to":"ce39b2e0_57fce1fa","updated":"2026-05-29 14:44:00.000000000","message":"Acknowledged","commit_id":"9d653d0b85e9aee0a2ae51e6a4dea3274e27f05c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"564da714f5248f2457f6266826c46dd1b2e5a181","unresolved":true,"context_lines":[{"line_number":40,"context_line":"- **Git**: Read-only operations (`git log`, `git diff`, `git status`) are fine."},{"line_number":41,"context_line":"  Mutating git operations (`add`, `commit`, `reset`, `checkout`, `push`,"},{"line_number":42,"context_line":"  `stash`, `merge`, `rebase`, etc.) require explicit user instruction."},{"line_number":43,"context_line":"- **Tool install**: Do not install tools system-wide (`apt`, `dnf`, `pip`, etc.)."},{"line_number":44,"context_line":"  Use `uvx` or `pipx run` only as ephemeral fallbacks when a tool is not on"},{"line_number":45,"context_line":"  `$PATH`."}],"source_content_type":"text/x-markdown","patch_set":7,"id":"0b4dffb3_6f7b907f","line":43,"updated":"2026-05-27 14:43:03.000000000","message":"this is here becuase whiel cursor did try uvx as a fall back the comamnd it tied to run woudlhave installed tox with pip install --user if it didnt work\n\nthis is also why i was explicit about the fall back because i have seen that behivor before where some models like composer will try to install things to when\na command is not found.\n\n\nmaybe just saying `do not install tools`  might be enough of a guardrail.","commit_id":"d44123a3a6f8c0b9794d99c9b4d09e8f90375703"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"0037cf4701ccfeb8d0ad94366655a0f139f5a410","unresolved":false,"context_lines":[{"line_number":40,"context_line":"- **Git**: Read-only operations (`git log`, `git diff`, `git status`) are fine."},{"line_number":41,"context_line":"  Mutating git operations (`add`, `commit`, `reset`, `checkout`, `push`,"},{"line_number":42,"context_line":"  `stash`, `merge`, `rebase`, etc.) require explicit user instruction."},{"line_number":43,"context_line":"- **Tool install**: Do not install tools system-wide (`apt`, `dnf`, `pip`, etc.)."},{"line_number":44,"context_line":"  Use `uvx` or `pipx run` only as ephemeral fallbacks when a tool is not on"},{"line_number":45,"context_line":"  `$PATH`."}],"source_content_type":"text/x-markdown","patch_set":7,"id":"bc12a6fe_b1b12b81","line":43,"in_reply_to":"0b4dffb3_6f7b907f","updated":"2026-05-29 14:44:00.000000000","message":"Acknowledged","commit_id":"d44123a3a6f8c0b9794d99c9b4d09e8f90375703"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"c149730a00fb45d6461cd067e92f2531441754f0","unresolved":true,"context_lines":[{"line_number":14,"context_line":"**Tests**: Use `tox` or `stestr`; never use `pytest`."},{"line_number":15,"context_line":"  Invoke them directly, for example `tox -e pep8`."},{"line_number":16,"context_line":"  Assume project tools are installed and available on `$PATH`."},{"line_number":17,"context_line":"  `uvx` or `pipx run` are acceptable fallbacks."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"**Routing:**"},{"line_number":20,"context_line":"- Repo layout: [doc/source/contributor/repo-overview.rst](doc/source/contributor/repo-overview.rst)"}],"source_content_type":"text/x-markdown","patch_set":9,"id":"3b0ea669_77a863ed","line":17,"range":{"start_line":17,"start_character":1,"end_line":17,"end_character":47},"updated":"2026-05-29 13:51:36.000000000","message":"They\u0027re not for me, and I guess I don\u0027t know why things like `pipx run` are necessry. pipx should put \"binaries\" in `~/.local/bin` and that should be in your `$PATH` (per the line above) anyway.\n\nNot a critical blocker for me, it just seems wrong to put setup stuff here that differs by platform. When I start a new session I\u0027ll try this and see if it correctly tries tox alone first, which is my primary concern.","commit_id":"6bf252d87b9492b877bdbaea0b86f059f4cd2721"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"0037cf4701ccfeb8d0ad94366655a0f139f5a410","unresolved":true,"context_lines":[{"line_number":14,"context_line":"**Tests**: Use `tox` or `stestr`; never use `pytest`."},{"line_number":15,"context_line":"  Invoke them directly, for example `tox -e pep8`."},{"line_number":16,"context_line":"  Assume project tools are installed and available on `$PATH`."},{"line_number":17,"context_line":"  `uvx` or `pipx run` are acceptable fallbacks."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"**Routing:**"},{"line_number":20,"context_line":"- Repo layout: [doc/source/contributor/repo-overview.rst](doc/source/contributor/repo-overview.rst)"}],"source_content_type":"text/x-markdown","patch_set":9,"id":"d7e80682_2d8318ff","line":17,"range":{"start_line":17,"start_character":1,"end_line":17,"end_character":47},"in_reply_to":"3b0ea669_77a863ed","updated":"2026-05-29 14:44:00.000000000","message":"ill try pullign this out into a user level agents.md instead and see who that goes\ninstead.\n\nwhen i first started workign on opentack if i was doign local development of test on my laptop i was required ot use windows and cygwin\nso i have nver had system wide isntall fo things like tox i always ahve had to manually create venv or as of about 12 month ago i adtopex uvx isntead of alwasy doign that by hadn\n\nin my devstack env these tooosl are there.\n\nif we keep the \"thoh shall not install stuff line later\" that will will proably be enough to stop cursor trying to do that. that was my main motivation stop the agents form tryign to isntall stuff by tellign it what it can try if its not on the path.\n\nso that might be enough on its own.","commit_id":"6bf252d87b9492b877bdbaea0b86f059f4cd2721"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"d6e3b66a726485f505d074f46530922389a2661f","unresolved":false,"context_lines":[{"line_number":14,"context_line":"**Tests**: Use `tox` or `stestr`; never use `pytest`."},{"line_number":15,"context_line":"  Invoke them directly, for example `tox -e pep8`."},{"line_number":16,"context_line":"  Assume project tools are installed and available on `$PATH`."},{"line_number":17,"context_line":"  `uvx` or `pipx run` are acceptable fallbacks."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"**Routing:**"},{"line_number":20,"context_line":"- Repo layout: [doc/source/contributor/repo-overview.rst](doc/source/contributor/repo-overview.rst)"}],"source_content_type":"text/x-markdown","patch_set":9,"id":"12943306_c0085da2","line":17,"range":{"start_line":17,"start_character":1,"end_line":17,"end_character":47},"in_reply_to":"6126b740_0fccebbe","updated":"2026-05-29 15:10:15.000000000","message":"On macOS, I get my tox installed by homebrew, which is sort of a hybrid of system-wide and per-user. It kinda assumes a single user of the system, so it\u0027s installed in `/opt` but all owned by the user and managed without any root. So I can upgrade my tox without sudo. My python (and pip) come from there as well, but it\u0027s also marked as \"managed\" so you can\u0027t pip install stuff there, even though all of `/opt/homebrew/**` is owned by me. I _could_ install tox from pipx instead of brew as well, but I don\u0027t.\n\nAnyway, this is why I think we just let the user setup the environment how they want and teach the agent to use it.","commit_id":"6bf252d87b9492b877bdbaea0b86f059f4cd2721"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"adb2c7552cc882f1aceee4afe21b5ef2b31925ca","unresolved":false,"context_lines":[{"line_number":14,"context_line":"**Tests**: Use `tox` or `stestr`; never use `pytest`."},{"line_number":15,"context_line":"  Invoke them directly, for example `tox -e pep8`."},{"line_number":16,"context_line":"  Assume project tools are installed and available on `$PATH`."},{"line_number":17,"context_line":"  `uvx` or `pipx run` are acceptable fallbacks."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"**Routing:**"},{"line_number":20,"context_line":"- Repo layout: [doc/source/contributor/repo-overview.rst](doc/source/contributor/repo-overview.rst)"}],"source_content_type":"text/x-markdown","patch_set":9,"id":"6126b740_0fccebbe","line":17,"range":{"start_line":17,"start_character":1,"end_line":17,"end_character":47},"in_reply_to":"d7e80682_2d8318ff","updated":"2026-05-29 14:53:28.000000000","message":"Done","commit_id":"6bf252d87b9492b877bdbaea0b86f059f4cd2721"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"c149730a00fb45d6461cd067e92f2531441754f0","unresolved":true,"context_lines":[{"line_number":33,"context_line":"## Guardrails"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"- **Tools:** Do not install tools system-wide with a package manager or `pip`"},{"line_number":36,"context_line":"   Assume project tools are installed and available on `$PATH`."},{"line_number":37,"context_line":"- **Concurrency**: Do not introduce asyncio or new eventlet usage. Review the"},{"line_number":38,"context_line":"  threading and concurrency docs when changing concurrent code."},{"line_number":39,"context_line":"- **Review**: Nova uses Gerrit, not GitHub PRs. Series are always unsquashed;"}],"source_content_type":"text/x-markdown","patch_set":9,"id":"d3fbbaba_666f2edf","line":36,"updated":"2026-05-29 13:51:36.000000000","message":"This is an exact copy of L16.. do we need it?","commit_id":"6bf252d87b9492b877bdbaea0b86f059f4cd2721"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"adb2c7552cc882f1aceee4afe21b5ef2b31925ca","unresolved":false,"context_lines":[{"line_number":33,"context_line":"## Guardrails"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"- **Tools:** Do not install tools system-wide with a package manager or `pip`"},{"line_number":36,"context_line":"   Assume project tools are installed and available on `$PATH`."},{"line_number":37,"context_line":"- **Concurrency**: Do not introduce asyncio or new eventlet usage. Review the"},{"line_number":38,"context_line":"  threading and concurrency docs when changing concurrent code."},{"line_number":39,"context_line":"- **Review**: Nova uses Gerrit, not GitHub PRs. Series are always unsquashed;"}],"source_content_type":"text/x-markdown","patch_set":9,"id":"57746a66_b01defad","line":36,"in_reply_to":"3e197190_195f371b","updated":"2026-05-29 14:53:28.000000000","message":"Done","commit_id":"6bf252d87b9492b877bdbaea0b86f059f4cd2721"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"0037cf4701ccfeb8d0ad94366655a0f139f5a410","unresolved":true,"context_lines":[{"line_number":33,"context_line":"## Guardrails"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"- **Tools:** Do not install tools system-wide with a package manager or `pip`"},{"line_number":36,"context_line":"   Assume project tools are installed and available on `$PATH`."},{"line_number":37,"context_line":"- **Concurrency**: Do not introduce asyncio or new eventlet usage. Review the"},{"line_number":38,"context_line":"  threading and concurrency docs when changing concurrent code."},{"line_number":39,"context_line":"- **Review**: Nova uses Gerrit, not GitHub PRs. Series are always unsquashed;"}],"source_content_type":"text/x-markdown","patch_set":9,"id":"3e197190_195f371b","line":36,"in_reply_to":"d3fbbaba_666f2edf","updated":"2026-05-29 14:44:00.000000000","message":"proably not i can remove it.","commit_id":"6bf252d87b9492b877bdbaea0b86f059f4cd2721"}],"doc/source/contributor/agentic-coding.rst":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"2d9dc316dcd21b80d90c3b6011e76fcc610dfafc","unresolved":true,"context_lines":[{"line_number":1,"context_line":".. _agentic-coding:"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":4,"context_line":" Agentic Coding"}],"source_content_type":"text/x-rst","patch_set":1,"id":"816aa739_8f19f234","line":1,"updated":"2026-04-14 20:50:36.000000000","message":"https://storage.gra.cloud.ovh.net/v1/AUTH_dcaab5e32b234d56b626f72581e3644c/zuul_opendev_logs_42f/openstack/42fbbbc1ea6741a8928cc429c7e35d5d/docs/contributor/agentic-coding.html\nhere is the render for folks","commit_id":"6a41556ea2705edd701efd1f8b79ab3db2c250e4"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"96f0e4605dc1f2e4335ad4da3bd85d80c2d7c2a2","unresolved":false,"context_lines":[{"line_number":1,"context_line":".. _agentic-coding:"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":4,"context_line":" Agentic Coding"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ca1ef7cf_aacf7718","line":1,"in_reply_to":"816aa739_8f19f234","updated":"2026-04-15 17:49:39.000000000","message":"Acknowledged","commit_id":"6a41556ea2705edd701efd1f8b79ab3db2c250e4"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"f000af3520c5324c861471dfd04a0d71e10a1262","unresolved":true,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"``AGENTS.md`` is a routing index, not a rulebook. When in"},{"line_number":20,"context_line":"doubt, agents should read the referenced files directly rather"},{"line_number":21,"context_line":"than relying on a summary that may drift from reality."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Session files and ephemeral output should be written under"},{"line_number":24,"context_line":"``ai/`` rather than to system temporary directories. Using"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5c22cfa5_45d8587c","line":21,"updated":"2026-04-14 18:37:17.000000000","message":"Yes, and I also hope we can avoid adding agent-specific knowledge to the tree and instead tread knowledge (like in Sylvain\u0027s repo) as \"documentation gaps\". Even if we need more contributor/maintainer/reviewer docs, I\u0027d like for the agents to read the docs and not have bespoke info just for them.","commit_id":"6a41556ea2705edd701efd1f8b79ab3db2c250e4"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"810d8e25b97b1a6e4d40432e37fc78147dc40343","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"``AGENTS.md`` is a routing index, not a rulebook. When in"},{"line_number":20,"context_line":"doubt, agents should read the referenced files directly rather"},{"line_number":21,"context_line":"than relying on a summary that may drift from reality."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Session files and ephemeral output should be written under"},{"line_number":24,"context_line":"``ai/`` rather than to system temporary directories. Using"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ffae8c72_22aa77fd","line":21,"in_reply_to":"5c22cfa5_45d8587c","updated":"2026-04-15 18:59:17.000000000","message":"Oops, should have been s/tread/treat/","commit_id":"6a41556ea2705edd701efd1f8b79ab3db2c250e4"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"f000af3520c5324c861471dfd04a0d71e10a1262","unresolved":true,"context_lines":[{"line_number":21,"context_line":"than relying on a summary that may drift from reality."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Session files and ephemeral output should be written under"},{"line_number":24,"context_line":"``ai/`` rather than to system temporary directories. Using"},{"line_number":25,"context_line":"``ai/tmp/`` serves two purposes: it keeps all agent file I/O"},{"line_number":26,"context_line":"inside the repo tree so developers can inspect, resume, or clean"},{"line_number":27,"context_line":"up agent work without searching elsewhere; and it sandboxes agent"}],"source_content_type":"text/x-rst","patch_set":1,"id":"d453aaf5_6b75c644","line":24,"updated":"2026-04-14 18:37:17.000000000","message":"I don\u0027t understand why we need to commit the `ai/` directory into the tree just to keep it empty. Can\u0027t we just let people mkdir that once per checkout if they want? I\u0027ve literally had only two (main) nova repos in the eleventy billion years I\u0027ve been working on this project, so doing so would not be much work for me. It can still be git ignored, of course.","commit_id":"6a41556ea2705edd701efd1f8b79ab3db2c250e4"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"fef829792591e72e83d52ca0ae97bf36383f2a6d","unresolved":true,"context_lines":[{"line_number":21,"context_line":"than relying on a summary that may drift from reality."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Session files and ephemeral output should be written under"},{"line_number":24,"context_line":"``ai/`` rather than to system temporary directories. Using"},{"line_number":25,"context_line":"``ai/tmp/`` serves two purposes: it keeps all agent file I/O"},{"line_number":26,"context_line":"inside the repo tree so developers can inspect, resume, or clean"},{"line_number":27,"context_line":"up agent work without searching elsewhere; and it sandboxes agent"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7f98cf6f_3324d36a","line":24,"in_reply_to":"500ff153_2e911b66","updated":"2026-04-14 21:08:01.000000000","message":"Yep, standardizing it and putting it in gitignore makes sense to me.","commit_id":"6a41556ea2705edd701efd1f8b79ab3db2c250e4"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"96f0e4605dc1f2e4335ad4da3bd85d80c2d7c2a2","unresolved":false,"context_lines":[{"line_number":21,"context_line":"than relying on a summary that may drift from reality."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Session files and ephemeral output should be written under"},{"line_number":24,"context_line":"``ai/`` rather than to system temporary directories. Using"},{"line_number":25,"context_line":"``ai/tmp/`` serves two purposes: it keeps all agent file I/O"},{"line_number":26,"context_line":"inside the repo tree so developers can inspect, resume, or clean"},{"line_number":27,"context_line":"up agent work without searching elsewhere; and it sandboxes agent"}],"source_content_type":"text/x-rst","patch_set":1,"id":"30cfe8dc_f7a9edbb","line":24,"in_reply_to":"7f98cf6f_3324d36a","updated":"2026-04-15 17:49:39.000000000","message":"Done","commit_id":"6a41556ea2705edd701efd1f8b79ab3db2c250e4"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"2d9dc316dcd21b80d90c3b6011e76fcc610dfafc","unresolved":true,"context_lines":[{"line_number":21,"context_line":"than relying on a summary that may drift from reality."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Session files and ephemeral output should be written under"},{"line_number":24,"context_line":"``ai/`` rather than to system temporary directories. Using"},{"line_number":25,"context_line":"``ai/tmp/`` serves two purposes: it keeps all agent file I/O"},{"line_number":26,"context_line":"inside the repo tree so developers can inspect, resume, or clean"},{"line_number":27,"context_line":"up agent work without searching elsewhere; and it sandboxes agent"}],"source_content_type":"text/x-rst","patch_set":1,"id":"500ff153_2e911b66","line":24,"in_reply_to":"d453aaf5_6b75c644","updated":"2026-04-14 20:50:36.000000000","message":"we coudl just git ignore it as well\npartly want a place to put the many untracked files i have locally.","commit_id":"6a41556ea2705edd701efd1f8b79ab3db2c250e4"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"f000af3520c5324c861471dfd04a0d71e10a1262","unresolved":true,"context_lines":[{"line_number":39,"context_line":"``AGENTS.md`` at the repository root is the primary agent index. It"},{"line_number":40,"context_line":"provides terse routing pointers and high-signal gotchas. ``CLAUDE.md``"},{"line_number":41,"context_line":"is a symlink to ``AGENTS.md`` so that tools using either filename pick"},{"line_number":42,"context_line":"up the same content automatically."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"The file is intentionally short (≤100 lines). It is a *routing layer*,"},{"line_number":45,"context_line":"not a tutorial. Agents follow its pointers to authoritative sources"}],"source_content_type":"text/x-rst","patch_set":1,"id":"4b0e13a0_9a9f90d7","line":42,"updated":"2026-04-14 18:37:17.000000000","message":"Is this necessary? I\u0027d much prefer we not have to have a `CLAUDE.md` in the tree and keep it neutral (also not sure what happens if you check out a symlink on windows). Can people just symlink this locally if they\u0027re using some tool that only looks at the latter?","commit_id":"6a41556ea2705edd701efd1f8b79ab3db2c250e4"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"fef829792591e72e83d52ca0ae97bf36383f2a6d","unresolved":true,"context_lines":[{"line_number":39,"context_line":"``AGENTS.md`` at the repository root is the primary agent index. It"},{"line_number":40,"context_line":"provides terse routing pointers and high-signal gotchas. ``CLAUDE.md``"},{"line_number":41,"context_line":"is a symlink to ``AGENTS.md`` so that tools using either filename pick"},{"line_number":42,"context_line":"up the same content automatically."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"The file is intentionally short (≤100 lines). It is a *routing layer*,"},{"line_number":45,"context_line":"not a tutorial. Agents follow its pointers to authoritative sources"}],"source_content_type":"text/x-rst","patch_set":1,"id":"a36fb7d8_d95d64e4","line":42,"in_reply_to":"256fd1d9_71b028d8","updated":"2026-04-14 21:08:01.000000000","message":"It won\u0027t because they\u0027re trying to hold out and be special, despite thunderous demands for it to read the standard file. I\u0027d prefer we just gitignore it and let Claude users (myself included, sometimes) symlink it if they want.","commit_id":"6a41556ea2705edd701efd1f8b79ab3db2c250e4"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"2d9dc316dcd21b80d90c3b6011e76fcc610dfafc","unresolved":true,"context_lines":[{"line_number":39,"context_line":"``AGENTS.md`` at the repository root is the primary agent index. It"},{"line_number":40,"context_line":"provides terse routing pointers and high-signal gotchas. ``CLAUDE.md``"},{"line_number":41,"context_line":"is a symlink to ``AGENTS.md`` so that tools using either filename pick"},{"line_number":42,"context_line":"up the same content automatically."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"The file is intentionally short (≤100 lines). It is a *routing layer*,"},{"line_number":45,"context_line":"not a tutorial. Agents follow its pointers to authoritative sources"}],"source_content_type":"text/x-rst","patch_set":1,"id":"256fd1d9_71b028d8","line":42,"in_reply_to":"4b0e13a0_9a9f90d7","updated":"2026-04-14 20:50:36.000000000","message":"so claude code wont read AGENTS.md so either we gitignore CLAUDE.md and let peopel create teh symlink themselves or we have teh symlink ro we cant supprot claude-code","commit_id":"6a41556ea2705edd701efd1f8b79ab3db2c250e4"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"96f0e4605dc1f2e4335ad4da3bd85d80c2d7c2a2","unresolved":false,"context_lines":[{"line_number":39,"context_line":"``AGENTS.md`` at the repository root is the primary agent index. It"},{"line_number":40,"context_line":"provides terse routing pointers and high-signal gotchas. ``CLAUDE.md``"},{"line_number":41,"context_line":"is a symlink to ``AGENTS.md`` so that tools using either filename pick"},{"line_number":42,"context_line":"up the same content automatically."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"The file is intentionally short (≤100 lines). It is a *routing layer*,"},{"line_number":45,"context_line":"not a tutorial. Agents follow its pointers to authoritative sources"}],"source_content_type":"text/x-rst","patch_set":1,"id":"543a42ed_57af259a","line":42,"in_reply_to":"a36fb7d8_d95d64e4","updated":"2026-04-15 17:49:39.000000000","message":"Done","commit_id":"6a41556ea2705edd701efd1f8b79ab3db2c250e4"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"c9cb6b09133cfeca51e1e274d3a8cc271f19b8ae","unresolved":true,"context_lines":[{"line_number":49,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"If ``ai/AGENTS.md`` exists, agents read it *after* the root"},{"line_number":52,"context_line":"``AGENTS.md``. It is intended for developer-local tweaks, active"},{"line_number":53,"context_line":"scratch notes, cross-session context, and in-progress plans. The"},{"line_number":54,"context_line":"``ai/`` directory is gitignored (except ``ai/.keep``) so its contents"},{"line_number":55,"context_line":"never appear in upstream review history."},{"line_number":56,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"98eb3010_47af0b5b","line":53,"range":{"start_line":52,"start_character":56,"end_line":53,"end_character":60},"updated":"2026-04-14 11:35:02.000000000","message":"the second hafl fo thie senticas is actully about the ai directory\nalso i shoudl lead with that then talk about the AGENT.md file after.","commit_id":"6a41556ea2705edd701efd1f8b79ab3db2c250e4"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"2d9dc316dcd21b80d90c3b6011e76fcc610dfafc","unresolved":true,"context_lines":[{"line_number":49,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"If ``ai/AGENTS.md`` exists, agents read it *after* the root"},{"line_number":52,"context_line":"``AGENTS.md``. It is intended for developer-local tweaks, active"},{"line_number":53,"context_line":"scratch notes, cross-session context, and in-progress plans. The"},{"line_number":54,"context_line":"``ai/`` directory is gitignored (except ``ai/.keep``) so its contents"},{"line_number":55,"context_line":"never appear in upstream review history."},{"line_number":56,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"3b658905_16f8a13f","line":53,"range":{"start_line":52,"start_character":56,"end_line":53,"end_character":60},"in_reply_to":"2c2b54f8_860b9ef3","updated":"2026-04-14 20:50:36.000000000","message":"so the local overied is described there already\n\nhttps://review.opendev.org/c/openstack/nova/+/984540/1/AGENTS.md#12\n\nbut your right the instuction to use ai for tempory storage need to be captured in the root one.","commit_id":"6a41556ea2705edd701efd1f8b79ab3db2c250e4"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"96f0e4605dc1f2e4335ad4da3bd85d80c2d7c2a2","unresolved":false,"context_lines":[{"line_number":49,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"If ``ai/AGENTS.md`` exists, agents read it *after* the root"},{"line_number":52,"context_line":"``AGENTS.md``. It is intended for developer-local tweaks, active"},{"line_number":53,"context_line":"scratch notes, cross-session context, and in-progress plans. The"},{"line_number":54,"context_line":"``ai/`` directory is gitignored (except ``ai/.keep``) so its contents"},{"line_number":55,"context_line":"never appear in upstream review history."},{"line_number":56,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"a4440787_89f72091","line":53,"range":{"start_line":52,"start_character":56,"end_line":53,"end_character":60},"in_reply_to":"3b658905_16f8a13f","updated":"2026-04-15 17:49:39.000000000","message":"Done","commit_id":"6a41556ea2705edd701efd1f8b79ab3db2c250e4"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"f000af3520c5324c861471dfd04a0d71e10a1262","unresolved":true,"context_lines":[{"line_number":49,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"If ``ai/AGENTS.md`` exists, agents read it *after* the root"},{"line_number":52,"context_line":"``AGENTS.md``. It is intended for developer-local tweaks, active"},{"line_number":53,"context_line":"scratch notes, cross-session context, and in-progress plans. The"},{"line_number":54,"context_line":"``ai/`` directory is gitignored (except ``ai/.keep``) so its contents"},{"line_number":55,"context_line":"never appear in upstream review history."},{"line_number":56,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"2c2b54f8_860b9ef3","line":53,"range":{"start_line":52,"start_character":56,"end_line":53,"end_character":60},"in_reply_to":"98eb3010_47af0b5b","updated":"2026-04-14 18:37:17.000000000","message":"Maybe this addresses my previous comment about local overrides. Maybe this needs to actually be in the root `AGENTS.md`?","commit_id":"6a41556ea2705edd701efd1f8b79ab3db2c250e4"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"c9cb6b09133cfeca51e1e274d3a8cc271f19b8ae","unresolved":true,"context_lines":[{"line_number":57,"context_line":"Constraints on ``ai/AGENTS.md``:"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"- Must not contradict ``HACKING.rst`` or ``doc/source/contributor/``."},{"line_number":60,"context_line":"- Must not duplicate content already in those canonical sources."},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"What Belongs in AGENTS.md"},{"line_number":63,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"db730459_60a421d7","line":60,"range":{"start_line":60,"start_character":2,"end_line":60,"end_character":6},"updated":"2026-04-14 11:35:02.000000000","message":"```suggestion\n- Should not duplicate content already in those canonical sources.\n```\n\nif we need to duplicate something that a sign it might warrnet inclusion in the hacking ro AGENTS.md file to make it more explicitly to the ai agent.","commit_id":"6a41556ea2705edd701efd1f8b79ab3db2c250e4"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"96f0e4605dc1f2e4335ad4da3bd85d80c2d7c2a2","unresolved":false,"context_lines":[{"line_number":57,"context_line":"Constraints on ``ai/AGENTS.md``:"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"- Must not contradict ``HACKING.rst`` or ``doc/source/contributor/``."},{"line_number":60,"context_line":"- Must not duplicate content already in those canonical sources."},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"What Belongs in AGENTS.md"},{"line_number":63,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"49b1cae1_679e7941","line":60,"range":{"start_line":60,"start_character":2,"end_line":60,"end_character":6},"in_reply_to":"4aaf4810_76e292da","updated":"2026-04-15 17:49:39.000000000","message":"let me know if you want any more refinement on this but hopefully the works","commit_id":"6a41556ea2705edd701efd1f8b79ab3db2c250e4"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"2d9dc316dcd21b80d90c3b6011e76fcc610dfafc","unresolved":true,"context_lines":[{"line_number":57,"context_line":"Constraints on ``ai/AGENTS.md``:"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"- Must not contradict ``HACKING.rst`` or ``doc/source/contributor/``."},{"line_number":60,"context_line":"- Must not duplicate content already in those canonical sources."},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"What Belongs in AGENTS.md"},{"line_number":63,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"4aaf4810_76e292da","line":60,"range":{"start_line":60,"start_character":2,"end_line":60,"end_character":6},"in_reply_to":"9fb3e113_9f99a36e","updated":"2026-04-14 20:50:36.000000000","message":"ok im not against that so we can make the local one take prescience over the repo.","commit_id":"6a41556ea2705edd701efd1f8b79ab3db2c250e4"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"f000af3520c5324c861471dfd04a0d71e10a1262","unresolved":true,"context_lines":[{"line_number":57,"context_line":"Constraints on ``ai/AGENTS.md``:"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"- Must not contradict ``HACKING.rst`` or ``doc/source/contributor/``."},{"line_number":60,"context_line":"- Must not duplicate content already in those canonical sources."},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"What Belongs in AGENTS.md"},{"line_number":63,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9fb3e113_9f99a36e","line":60,"range":{"start_line":60,"start_character":2,"end_line":60,"end_character":6},"in_reply_to":"db730459_60a421d7","updated":"2026-04-14 18:37:17.000000000","message":"I would like to remove both of these things. The hacking checks are deterministic and non-optional as enforced by the gate. Anything in one of the other sources could be sending an agent off on some unintentional (or undesired) behavior that I may not want. I\u0027d prefer this to say \"Anything in ai/AGENTS.md overrides anything else you read.\" The human is still responsible for what it does and the reviewers still responsible for approval. I don\u0027t want you telling my agent to ignore things in my local overrides file that I want to reserve for manual operation (for example).","commit_id":"6a41556ea2705edd701efd1f8b79ab3db2c250e4"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"f000af3520c5324c861471dfd04a0d71e10a1262","unresolved":true,"context_lines":[{"line_number":92,"context_line":"- Linter-enforced rules (H201, H210, H216, etc.)."},{"line_number":93,"context_line":"- Aspirational notes or in-progress plans — those go in ``ai/``."},{"line_number":94,"context_line":"- Anything that duplicates a canonical source; duplication creates"},{"line_number":95,"context_line":"  drift and degrades agent performance."},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"Maintaining AGENTS.md"},{"line_number":98,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"a4d9072b_414606f4","line":95,"updated":"2026-04-14 18:37:17.000000000","message":"..knowledge that is for (or in a form for) agents only. That stuff belongs in doc/ and agents can learn to live with it, IMHO.","commit_id":"6a41556ea2705edd701efd1f8b79ab3db2c250e4"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"810d8e25b97b1a6e4d40432e37fc78147dc40343","unresolved":true,"context_lines":[{"line_number":92,"context_line":"- Linter-enforced rules (H201, H210, H216, etc.)."},{"line_number":93,"context_line":"- Aspirational notes or in-progress plans — those go in ``ai/``."},{"line_number":94,"context_line":"- Anything that duplicates a canonical source; duplication creates"},{"line_number":95,"context_line":"  drift and degrades agent performance."},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"Maintaining AGENTS.md"},{"line_number":98,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"99d289b8_af282f0f","line":95,"in_reply_to":"1dc7a70d_f7ca6830","updated":"2026-04-15 18:59:17.000000000","message":"I\u0027d like it explicit, but I could argue against it using this rule anyway.","commit_id":"6a41556ea2705edd701efd1f8b79ab3db2c250e4"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"0b3ccb786228782b60a58d904f7b36113f7ce43c","unresolved":false,"context_lines":[{"line_number":92,"context_line":"- Linter-enforced rules (H201, H210, H216, etc.)."},{"line_number":93,"context_line":"- Aspirational notes or in-progress plans — those go in ``ai/``."},{"line_number":94,"context_line":"- Anything that duplicates a canonical source; duplication creates"},{"line_number":95,"context_line":"  drift and degrades agent performance."},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"Maintaining AGENTS.md"},{"line_number":98,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"12dea1fc_43dff881","line":95,"in_reply_to":"99d289b8_af282f0f","updated":"2026-04-15 19:49:17.000000000","message":"done. ill leave this review ot gahter som more feedback and check back in in a day or so but i think i have adress most of the initail feed back now.","commit_id":"6a41556ea2705edd701efd1f8b79ab3db2c250e4"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"96f0e4605dc1f2e4335ad4da3bd85d80c2d7c2a2","unresolved":true,"context_lines":[{"line_number":92,"context_line":"- Linter-enforced rules (H201, H210, H216, etc.)."},{"line_number":93,"context_line":"- Aspirational notes or in-progress plans — those go in ``ai/``."},{"line_number":94,"context_line":"- Anything that duplicates a canonical source; duplication creates"},{"line_number":95,"context_line":"  drift and degrades agent performance."},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"Maintaining AGENTS.md"},{"line_number":98,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"1dc7a70d_f7ca6830","line":95,"in_reply_to":"a4d9072b_414606f4","updated":"2026-04-15 17:49:39.000000000","message":"if you like i cna make it more explcity that we shoudl avoid \"agent only\" instructions/rules. and that our doc in general is our knowledge store.","commit_id":"6a41556ea2705edd701efd1f8b79ab3db2c250e4"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"f000af3520c5324c861471dfd04a0d71e10a1262","unresolved":true,"context_lines":[{"line_number":107,"context_line":"- **Review on structural change.** When a major subsystem changes"},{"line_number":108,"context_line":"  (new linter, workflow change) update the routing table."},{"line_number":109,"context_line":"- **Keep it short.** If the file approaches 100 lines, prune"},{"line_number":110,"context_line":"  before adding."},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"Commit Trailer Conventions"},{"line_number":113,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"c91c5fb7_99818a6b","line":110,"updated":"2026-04-14 18:37:17.000000000","message":"I\u0027d also like something like:\n\n\"Less is more. We don\u0027t need to legislate everything and cover every possible (likely controversial) opinion.\"\n\nI\u0027m really happy that it\u0027s as sparse as it is - I was expecting that it might be setting us up for a long fight over every line and rule.","commit_id":"6a41556ea2705edd701efd1f8b79ab3db2c250e4"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"2d9dc316dcd21b80d90c3b6011e76fcc610dfafc","unresolved":true,"context_lines":[{"line_number":107,"context_line":"- **Review on structural change.** When a major subsystem changes"},{"line_number":108,"context_line":"  (new linter, workflow change) update the routing table."},{"line_number":109,"context_line":"- **Keep it short.** If the file approaches 100 lines, prune"},{"line_number":110,"context_line":"  before adding."},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"Commit Trailer Conventions"},{"line_number":113,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"f3384537_4e170e28","line":110,"in_reply_to":"c91c5fb7_99818a6b","updated":"2026-04-14 20:50:36.000000000","message":"i used ot have much longer AGENT.md flils and i deleted most of them in and have tired keepign it very short or just tellign it to refence \n\nhttps://github.com/SeanMooney/openstack-ai-style-guide/blob/master/docs/quick-rules.md\n\nbut yes something like \n\n\"Less is more. We don\u0027t need to legislate everything and cover every possible (likely controversial) opinion.\"\n\nis very much how i was thinkign of this.\n\ni would prefer to set up some general guidance and just have the tools read the docs an emulate the existing code. provide there is a way for folkd to also overried it if need hence ai/Agents.md","commit_id":"6a41556ea2705edd701efd1f8b79ab3db2c250e4"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"96f0e4605dc1f2e4335ad4da3bd85d80c2d7c2a2","unresolved":false,"context_lines":[{"line_number":107,"context_line":"- **Review on structural change.** When a major subsystem changes"},{"line_number":108,"context_line":"  (new linter, workflow change) update the routing table."},{"line_number":109,"context_line":"- **Keep it short.** If the file approaches 100 lines, prune"},{"line_number":110,"context_line":"  before adding."},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"Commit Trailer Conventions"},{"line_number":113,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"a172591a_8f6f207a","line":110,"in_reply_to":"f3384537_4e170e28","updated":"2026-04-15 17:49:39.000000000","message":"Done","commit_id":"6a41556ea2705edd701efd1f8b79ab3db2c250e4"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"c9cb6b09133cfeca51e1e274d3a8cc271f19b8ae","unresolved":true,"context_lines":[{"line_number":123,"context_line":"Notation: ``\u003cx\u003e`` \u003d required (no angle brackets in output);"},{"line_number":124,"context_line":"``[x]`` \u003d optional (omit entirely if unknown)."},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"``Generated-By: \u003ctool name\u003e [\u003cmodel name and version\u003e]``"},{"line_number":127,"context_line":"    Use when the commit is mostly machine-authored with minimal human"},{"line_number":128,"context_line":"    revision. Tool name is required; model and version are optional"},{"line_number":129,"context_line":"    but should be included when known."}],"source_content_type":"text/x-rst","patch_set":1,"id":"920f8487_153819c2","line":126,"range":{"start_line":126,"start_character":28,"end_line":126,"end_character":54},"updated":"2026-04-14 11:35:02.000000000","message":"i should remvoe the inner \u003c\u003e","commit_id":"6a41556ea2705edd701efd1f8b79ab3db2c250e4"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"96f0e4605dc1f2e4335ad4da3bd85d80c2d7c2a2","unresolved":false,"context_lines":[{"line_number":123,"context_line":"Notation: ``\u003cx\u003e`` \u003d required (no angle brackets in output);"},{"line_number":124,"context_line":"``[x]`` \u003d optional (omit entirely if unknown)."},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"``Generated-By: \u003ctool name\u003e [\u003cmodel name and version\u003e]``"},{"line_number":127,"context_line":"    Use when the commit is mostly machine-authored with minimal human"},{"line_number":128,"context_line":"    revision. Tool name is required; model and version are optional"},{"line_number":129,"context_line":"    but should be included when known."}],"source_content_type":"text/x-rst","patch_set":1,"id":"eb57c77d_bc905b80","line":126,"range":{"start_line":126,"start_character":28,"end_line":126,"end_character":54},"in_reply_to":"920f8487_153819c2","updated":"2026-04-15 17:49:39.000000000","message":"Done","commit_id":"6a41556ea2705edd701efd1f8b79ab3db2c250e4"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"f000af3520c5324c861471dfd04a0d71e10a1262","unresolved":true,"context_lines":[{"line_number":142,"context_line":""},{"line_number":143,"context_line":"    Assisted-By: my-agent my-model-v1"},{"line_number":144,"context_line":"    Signed-off-by: Jane Smith \u003cjane@example.com\u003e"},{"line_number":145,"context_line":"    Change-Id: I1234567890abcdef1234567890abcdef12345678"}],"source_content_type":"text/x-rst","patch_set":1,"id":"1248ac67_8b25e84b","line":145,"updated":"2026-04-14 18:37:17.000000000","message":"Again, I\u0027d rather you not tell my agent that this is even possible. Maybe we can just soften this with some language about there always being a human in the loop and humans have to approve all the things? Again, I\u0027d have to have this locally resident to see if it gives my agent \"agency\" to do git things I do not want it to do.","commit_id":"6a41556ea2705edd701efd1f8b79ab3db2c250e4"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"2d9dc316dcd21b80d90c3b6011e76fcc610dfafc","unresolved":true,"context_lines":[{"line_number":142,"context_line":""},{"line_number":143,"context_line":"    Assisted-By: my-agent my-model-v1"},{"line_number":144,"context_line":"    Signed-off-by: Jane Smith \u003cjane@example.com\u003e"},{"line_number":145,"context_line":"    Change-Id: I1234567890abcdef1234567890abcdef12345678"}],"source_content_type":"text/x-rst","patch_set":1,"id":"cd879627_503e9725","line":145,"in_reply_to":"1248ac67_8b25e84b","updated":"2026-04-14 20:50:36.000000000","message":"sure although i have never really had an issue with it usgin https://github.com/SeanMooney/openstack-ai-style-guide/blob/master/docs/quick-rules.md\n\nbut we can totally just add a line that say do not commit unless explcity told too.","commit_id":"6a41556ea2705edd701efd1f8b79ab3db2c250e4"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"96f0e4605dc1f2e4335ad4da3bd85d80c2d7c2a2","unresolved":false,"context_lines":[{"line_number":142,"context_line":""},{"line_number":143,"context_line":"    Assisted-By: my-agent my-model-v1"},{"line_number":144,"context_line":"    Signed-off-by: Jane Smith \u003cjane@example.com\u003e"},{"line_number":145,"context_line":"    Change-Id: I1234567890abcdef1234567890abcdef12345678"}],"source_content_type":"text/x-rst","patch_set":1,"id":"4aececba_6dd3b23e","line":145,"in_reply_to":"9dc51a2e_ff0c5ae9","updated":"2026-04-15 17:49:39.000000000","message":"for what its worth i really like factory.ai\u0027s droid autonomy levels\nhttps://docs.factory.ai/reference/cli-reference#autonomy-levels\n\ni have only used it in personal proejct so far but loa and medium were where i mostly operated at after intially doing planning in the read only spec mode.\n\ni have not used open code since sortly after it launched and i found it to a bit to aggressive in doing thing so i have been reluctant to use it as a result.\n\nill resolve this for now as i think this is now covered by the update to agents.md","commit_id":"6a41556ea2705edd701efd1f8b79ab3db2c250e4"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"fef829792591e72e83d52ca0ae97bf36383f2a6d","unresolved":true,"context_lines":[{"line_number":142,"context_line":""},{"line_number":143,"context_line":"    Assisted-By: my-agent my-model-v1"},{"line_number":144,"context_line":"    Signed-off-by: Jane Smith \u003cjane@example.com\u003e"},{"line_number":145,"context_line":"    Change-Id: I1234567890abcdef1234567890abcdef12345678"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9dc51a2e_ff0c5ae9","line":145,"in_reply_to":"cd879627_503e9725","updated":"2026-04-14 21:08:01.000000000","message":"In plan mode I haven\u0027t had a problem, correct. But with opencode I\u0027ve switched it from an agreed-on plan (which didn\u0027t mention anything about git commits) to build mode and had it assume that I wanted it to commit all the things it just did. I scolded it appropriately, but it is not pleasant when it happens :)","commit_id":"6a41556ea2705edd701efd1f8b79ab3db2c250e4"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"bb543133d23f847e7f41fd7070e4d8fc688ad428","unresolved":true,"context_lines":[{"line_number":13,"context_line":"Nova\u0027s approach to agentic coding is minimal scaffolding and native"},{"line_number":14,"context_line":"discovery: if a convention must be followed it is documented in human-readable"},{"line_number":15,"context_line":"prose that agents can find via normal file exploration. Agent context files"},{"line_number":16,"context_line":"are kept short so they route rather than encode knowledge."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"``AGENTS.md`` is a routing index, not a rulebook. When in doubt, agents should"},{"line_number":19,"context_line":"read the referenced files directly rather than relying on a summary that may"}],"source_content_type":"text/x-rst","patch_set":5,"id":"40757aac_423d14ca","line":16,"updated":"2026-04-24 12:16:04.000000000","message":"+1","commit_id":"9d653d0b85e9aee0a2ae51e6a4dea3274e27f05c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"564da714f5248f2457f6266826c46dd1b2e5a181","unresolved":true,"context_lines":[{"line_number":13,"context_line":"Nova\u0027s approach to agentic coding is minimal scaffolding and native"},{"line_number":14,"context_line":"discovery: if a convention must be followed it is documented in human-readable"},{"line_number":15,"context_line":"prose that agents can find via normal file exploration. Agent context files"},{"line_number":16,"context_line":"are kept short so they route rather than encode knowledge."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"``AGENTS.md`` is a routing index, not a rulebook. When in doubt, agents should"},{"line_number":19,"context_line":"read the referenced files directly rather than relying on a summary that may"}],"source_content_type":"text/x-rst","patch_set":5,"id":"d25d12d2_57d4c549","line":16,"in_reply_to":"40757aac_423d14ca","updated":"2026-05-27 14:43:03.000000000","message":"i pulled out the line itme in to a set of principals as you suggeed below\nbut i might just keep this one paragha to codify the philosphy suscintly.","commit_id":"9d653d0b85e9aee0a2ae51e6a4dea3274e27f05c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"f8478ce2c14f493c5801b5026bf0d37011eb4191","unresolved":false,"context_lines":[{"line_number":13,"context_line":"Nova\u0027s approach to agentic coding is minimal scaffolding and native"},{"line_number":14,"context_line":"discovery: if a convention must be followed it is documented in human-readable"},{"line_number":15,"context_line":"prose that agents can find via normal file exploration. Agent context files"},{"line_number":16,"context_line":"are kept short so they route rather than encode knowledge."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"``AGENTS.md`` is a routing index, not a rulebook. When in doubt, agents should"},{"line_number":19,"context_line":"read the referenced files directly rather than relying on a summary that may"}],"source_content_type":"text/x-rst","patch_set":5,"id":"196bd4e3_51eabbb1","line":16,"in_reply_to":"d25d12d2_57d4c549","updated":"2026-05-29 14:45:36.000000000","message":"Done","commit_id":"9d653d0b85e9aee0a2ae51e6a4dea3274e27f05c"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"bb543133d23f847e7f41fd7070e4d8fc688ad428","unresolved":true,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"``AGENTS.md`` is a routing index, not a rulebook. When in doubt, agents should"},{"line_number":19,"context_line":"read the referenced files directly rather than relying on a summary that may"},{"line_number":20,"context_line":"drift from reality."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"Session files and ephemeral output should be written under ``ai/`` rather than"},{"line_number":23,"context_line":"to system temporary directories. See ``AGENTS.md`` for the canonical guidance"}],"source_content_type":"text/x-rst","patch_set":5,"id":"b5a35171_8470d31d","line":20,"updated":"2026-04-24 12:16:04.000000000","message":"+1 See my comment in AGENT.md about a possible violation of this rule :)","commit_id":"9d653d0b85e9aee0a2ae51e6a4dea3274e27f05c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"564da714f5248f2457f6266826c46dd1b2e5a181","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"``AGENTS.md`` is a routing index, not a rulebook. When in doubt, agents should"},{"line_number":19,"context_line":"read the referenced files directly rather than relying on a summary that may"},{"line_number":20,"context_line":"drift from reality."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"Session files and ephemeral output should be written under ``ai/`` rather than"},{"line_number":23,"context_line":"to system temporary directories. See ``AGENTS.md`` for the canonical guidance"}],"source_content_type":"text/x-rst","patch_set":5,"id":"29ff08cf_d2fecf24","line":20,"in_reply_to":"b5a35171_8470d31d","updated":"2026-05-27 14:43:03.000000000","message":"Acknowledged","commit_id":"9d653d0b85e9aee0a2ae51e6a4dea3274e27f05c"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"bb543133d23f847e7f41fd7070e4d8fc688ad428","unresolved":true,"context_lines":[{"line_number":21,"context_line":""},{"line_number":22,"context_line":"Session files and ephemeral output should be written under ``ai/`` rather than"},{"line_number":23,"context_line":"to system temporary directories. See ``AGENTS.md`` for the canonical guidance"},{"line_number":24,"context_line":"on how agents should use this directory."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"AGENTS.md"},{"line_number":27,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":5,"id":"7cde4419_1294a5bf","line":24,"updated":"2026-04-24 12:16:04.000000000","message":"We need to decide where to define what is the `ai/` directory used for. As it is now mentioned here to read the AGENT.md but then at L41-L53 we start defining rules within `ai/`","commit_id":"9d653d0b85e9aee0a2ae51e6a4dea3274e27f05c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"564da714f5248f2457f6266826c46dd1b2e5a181","unresolved":false,"context_lines":[{"line_number":21,"context_line":""},{"line_number":22,"context_line":"Session files and ephemeral output should be written under ``ai/`` rather than"},{"line_number":23,"context_line":"to system temporary directories. See ``AGENTS.md`` for the canonical guidance"},{"line_number":24,"context_line":"on how agents should use this directory."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"AGENTS.md"},{"line_number":27,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":5,"id":"e9b6d7bb_d0ca4772","line":24,"in_reply_to":"33db44a2_e4e53ea1","updated":"2026-05-27 14:43:03.000000000","message":"Done","commit_id":"9d653d0b85e9aee0a2ae51e6a4dea3274e27f05c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"112acf4d91a8d560b483b78ebacf27bb23ae27a9","unresolved":true,"context_lines":[{"line_number":21,"context_line":""},{"line_number":22,"context_line":"Session files and ephemeral output should be written under ``ai/`` rather than"},{"line_number":23,"context_line":"to system temporary directories. See ``AGENTS.md`` for the canonical guidance"},{"line_number":24,"context_line":"on how agents should use this directory."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"AGENTS.md"},{"line_number":27,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":5,"id":"33db44a2_e4e53ea1","line":24,"in_reply_to":"7cde4419_1294a5bf","updated":"2026-05-26 17:04:24.000000000","message":"i think im going to update this to say .tmp\nthat was my propsoal for the agentic workflows repo","commit_id":"9d653d0b85e9aee0a2ae51e6a4dea3274e27f05c"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"bb543133d23f847e7f41fd7070e4d8fc688ad428","unresolved":true,"context_lines":[{"line_number":27,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"``AGENTS.md`` at the repository root is the primary agent index. It provides"},{"line_number":30,"context_line":"terse routing pointers and high-signal gotchas. The file is intentionally short"},{"line_number":31,"context_line":"(\u003c\u003d100 lines): a *routing layer*, not a tutorial. Agents follow its pointers"},{"line_number":32,"context_line":"to authoritative sources rather than expecting exhaustive inline rules."},{"line_number":33,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"b0ce7428_02bf9e04","line":30,"range":{"start_line":30,"start_character":27,"end_line":30,"end_character":46},"updated":"2026-04-24 12:16:04.000000000","message":"Is this a summary that will \" drift from reality\" ? 😉","commit_id":"9d653d0b85e9aee0a2ae51e6a4dea3274e27f05c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"564da714f5248f2457f6266826c46dd1b2e5a181","unresolved":false,"context_lines":[{"line_number":27,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"``AGENTS.md`` at the repository root is the primary agent index. It provides"},{"line_number":30,"context_line":"terse routing pointers and high-signal gotchas. The file is intentionally short"},{"line_number":31,"context_line":"(\u003c\u003d100 lines): a *routing layer*, not a tutorial. Agents follow its pointers"},{"line_number":32,"context_line":"to authoritative sources rather than expecting exhaustive inline rules."},{"line_number":33,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"e6549fc3_c5afa517","line":30,"range":{"start_line":30,"start_character":27,"end_line":30,"end_character":46},"in_reply_to":"b0ce7428_02bf9e04","updated":"2026-05-27 14:43:03.000000000","message":"Acknowledged","commit_id":"9d653d0b85e9aee0a2ae51e6a4dea3274e27f05c"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"bb543133d23f847e7f41fd7070e4d8fc688ad428","unresolved":true,"context_lines":[{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    ln -s AGENTS.md CLAUDE.md"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"It is not committed so the repository stays tool-neutral."},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"Local Developer Overlay"},{"line_number":42,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":5,"id":"b9f88145_2f191439","line":39,"updated":"2026-04-24 12:16:04.000000000","message":"Lets make this tool-neutrality as a separate top level statement in this doc rather than small note here.","commit_id":"9d653d0b85e9aee0a2ae51e6a4dea3274e27f05c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"564da714f5248f2457f6266826c46dd1b2e5a181","unresolved":false,"context_lines":[{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    ln -s AGENTS.md CLAUDE.md"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"It is not committed so the repository stays tool-neutral."},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"Local Developer Overlay"},{"line_number":42,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1cc19d5a_ac519a47","line":39,"in_reply_to":"b9f88145_2f191439","updated":"2026-05-27 14:43:03.000000000","message":"Done","commit_id":"9d653d0b85e9aee0a2ae51e6a4dea3274e27f05c"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"bb543133d23f847e7f41fd7070e4d8fc688ad428","unresolved":true,"context_lines":[{"line_number":52,"context_line":"- Takes precedence over the root ``AGENTS.md`` on any conflict."},{"line_number":53,"context_line":"- Contents are never committed upstream."},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"What Belongs in AGENTS.md"},{"line_number":56,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"Include only information that is:"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"**Non-discoverable** — not obvious from reading the code, ``tox.ini``,"},{"line_number":61,"context_line":"``pyproject.toml``, or other checked-in files."}],"source_content_type":"text/x-rst","patch_set":5,"id":"1896385d_ff733ca4","line":58,"range":{"start_line":55,"start_character":0,"end_line":58,"end_character":33},"updated":"2026-04-24 12:16:04.000000000","message":"I\u0027m wondering if we want or files self defining or we want to have a separate meta guideline what a given files should contain. Now both AGETNS.md and this file describe rules about what should be in AGENTS.md. I prefer describing that rules in a single place and referencing it when needed","commit_id":"9d653d0b85e9aee0a2ae51e6a4dea3274e27f05c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"564da714f5248f2457f6266826c46dd1b2e5a181","unresolved":true,"context_lines":[{"line_number":52,"context_line":"- Takes precedence over the root ``AGENTS.md`` on any conflict."},{"line_number":53,"context_line":"- Contents are never committed upstream."},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"What Belongs in AGENTS.md"},{"line_number":56,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"Include only information that is:"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"**Non-discoverable** — not obvious from reading the code, ``tox.ini``,"},{"line_number":61,"context_line":"``pyproject.toml``, or other checked-in files."}],"source_content_type":"text/x-rst","patch_set":5,"id":"2e4cdc9c_b6459356","line":58,"range":{"start_line":55,"start_character":0,"end_line":58,"end_character":33},"in_reply_to":"1896385d_ff733ca4","updated":"2026-05-27 14:43:03.000000000","message":"i have moved the guidlien of what shoudl be in AGENTS.md to this fiel and\nAGETNS.md is not the \"rednered output\" of sorts.\n\nso its not self decribing becuase most of the time you are not going to be ediging it so the rules fo doing so should not be always in the context window.","commit_id":"9d653d0b85e9aee0a2ae51e6a4dea3274e27f05c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"f8478ce2c14f493c5801b5026bf0d37011eb4191","unresolved":false,"context_lines":[{"line_number":52,"context_line":"- Takes precedence over the root ``AGENTS.md`` on any conflict."},{"line_number":53,"context_line":"- Contents are never committed upstream."},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"What Belongs in AGENTS.md"},{"line_number":56,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"Include only information that is:"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"**Non-discoverable** — not obvious from reading the code, ``tox.ini``,"},{"line_number":61,"context_line":"``pyproject.toml``, or other checked-in files."}],"source_content_type":"text/x-rst","patch_set":5,"id":"9db223a1_3a302199","line":58,"range":{"start_line":55,"start_character":0,"end_line":58,"end_character":33},"in_reply_to":"2e4cdc9c_b6459356","updated":"2026-05-29 14:45:36.000000000","message":"Acknowledged","commit_id":"9d653d0b85e9aee0a2ae51e6a4dea3274e27f05c"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"bb543133d23f847e7f41fd7070e4d8fc688ad428","unresolved":true,"context_lines":[{"line_number":60,"context_line":"**Non-discoverable** — not obvious from reading the code, ``tox.ini``,"},{"line_number":61,"context_line":"``pyproject.toml``, or other checked-in files."},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"**High-signal** — likely to prevent a wrong action that an agent would"},{"line_number":64,"context_line":"otherwise take (a \"gotcha\")."},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"**Terse** — one line or a short bullet. Long-form explanations belong in"},{"line_number":67,"context_line":"``doc/source/contributor/``; brief rules in ``HACKING.rst``."}],"source_content_type":"text/x-rst","patch_set":5,"id":"0ef0cbc8_83776ca7","line":64,"range":{"start_line":63,"start_character":0,"end_line":64,"end_character":28},"updated":"2026-04-24 12:16:04.000000000","message":"I feel like these are like hot patching a running system to prevent a failure. Sometimes we need it quickly but we eventually need to fix our documentation or information routing system or the tool itself to work correctly. \n\nI afraid if we allow gotchas to accumulate then the gotcha collection will be a random pile of information.","commit_id":"9d653d0b85e9aee0a2ae51e6a4dea3274e27f05c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"564da714f5248f2457f6266826c46dd1b2e5a181","unresolved":true,"context_lines":[{"line_number":60,"context_line":"**Non-discoverable** — not obvious from reading the code, ``tox.ini``,"},{"line_number":61,"context_line":"``pyproject.toml``, or other checked-in files."},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"**High-signal** — likely to prevent a wrong action that an agent would"},{"line_number":64,"context_line":"otherwise take (a \"gotcha\")."},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"**Terse** — one line or a short bullet. Long-form explanations belong in"},{"line_number":67,"context_line":"``doc/source/contributor/``; brief rules in ``HACKING.rst``."}],"source_content_type":"text/x-rst","patch_set":5,"id":"342563bb_ce348639","line":64,"range":{"start_line":63,"start_character":0,"end_line":64,"end_character":28},"in_reply_to":"0ef0cbc8_83776ca7","updated":"2026-05-27 14:43:03.000000000","message":"this is really ment to be thing like dont use pytest.\nthe models have unfortualy been traied on that as the default way to run python test so we just have  to say dont to one or two things liek that.\n\ni dont think we will have a lot of thsese but the other one is \"dont isntall tools if they are not present\" cursor and opencode then to ask to do that if tox or pytest is not vaiabel system wide\n\ni have not seen claude do this or pi but those are the short gardraisl this was ment to cover.","commit_id":"9d653d0b85e9aee0a2ae51e6a4dea3274e27f05c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"f8478ce2c14f493c5801b5026bf0d37011eb4191","unresolved":false,"context_lines":[{"line_number":60,"context_line":"**Non-discoverable** — not obvious from reading the code, ``tox.ini``,"},{"line_number":61,"context_line":"``pyproject.toml``, or other checked-in files."},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"**High-signal** — likely to prevent a wrong action that an agent would"},{"line_number":64,"context_line":"otherwise take (a \"gotcha\")."},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"**Terse** — one line or a short bullet. Long-form explanations belong in"},{"line_number":67,"context_line":"``doc/source/contributor/``; brief rules in ``HACKING.rst``."}],"source_content_type":"text/x-rst","patch_set":5,"id":"3e0976a9_115031c2","line":64,"range":{"start_line":63,"start_character":0,"end_line":64,"end_character":28},"in_reply_to":"342563bb_ce348639","updated":"2026-05-29 14:45:36.000000000","message":"Acknowledged","commit_id":"9d653d0b85e9aee0a2ae51e6a4dea3274e27f05c"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"bb543133d23f847e7f41fd7070e4d8fc688ad428","unresolved":true,"context_lines":[{"line_number":68,"context_line":""},{"line_number":69,"context_line":"Examples of appropriate content:"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"- Which tox env is the test entry point and which tools to avoid."},{"line_number":72,"context_line":"- Upstream review workflow (Gerrit, not GitHub PRs)."},{"line_number":73,"context_line":"- Commit trailer conventions specific to this project."},{"line_number":74,"context_line":"- Routing pointers to authoritative sources."}],"source_content_type":"text/x-rst","patch_set":5,"id":"b8823e90_e3460426","line":71,"updated":"2026-04-24 12:16:04.000000000","message":"Does it belong to our testing guide?","commit_id":"9d653d0b85e9aee0a2ae51e6a4dea3274e27f05c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"f8478ce2c14f493c5801b5026bf0d37011eb4191","unresolved":false,"context_lines":[{"line_number":68,"context_line":""},{"line_number":69,"context_line":"Examples of appropriate content:"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"- Which tox env is the test entry point and which tools to avoid."},{"line_number":72,"context_line":"- Upstream review workflow (Gerrit, not GitHub PRs)."},{"line_number":73,"context_line":"- Commit trailer conventions specific to this project."},{"line_number":74,"context_line":"- Routing pointers to authoritative sources."}],"source_content_type":"text/x-rst","patch_set":5,"id":"f691a515_8d48f3eb","line":71,"in_reply_to":"99fce6d9_31d15890","updated":"2026-05-29 14:45:36.000000000","message":"Done","commit_id":"9d653d0b85e9aee0a2ae51e6a4dea3274e27f05c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"564da714f5248f2457f6266826c46dd1b2e5a181","unresolved":true,"context_lines":[{"line_number":68,"context_line":""},{"line_number":69,"context_line":"Examples of appropriate content:"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"- Which tox env is the test entry point and which tools to avoid."},{"line_number":72,"context_line":"- Upstream review workflow (Gerrit, not GitHub PRs)."},{"line_number":73,"context_line":"- Commit trailer conventions specific to this project."},{"line_number":74,"context_line":"- Routing pointers to authoritative sources."}],"source_content_type":"text/x-rst","patch_set":5,"id":"99fce6d9_31d15890","line":71,"in_reply_to":"b8823e90_e3460426","updated":"2026-05-27 14:43:03.000000000","message":"its partly there and its in hacking to a degree but i have tired to make this stonger.","commit_id":"9d653d0b85e9aee0a2ae51e6a4dea3274e27f05c"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"bb543133d23f847e7f41fd7070e4d8fc688ad428","unresolved":true,"context_lines":[{"line_number":69,"context_line":"Examples of appropriate content:"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"- Which tox env is the test entry point and which tools to avoid."},{"line_number":72,"context_line":"- Upstream review workflow (Gerrit, not GitHub PRs)."},{"line_number":73,"context_line":"- Commit trailer conventions specific to this project."},{"line_number":74,"context_line":"- Routing pointers to authoritative sources."},{"line_number":75,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"dbd23715_fb3c068a","line":72,"updated":"2026-04-24 12:16:04.000000000","message":"contributor guide?","commit_id":"9d653d0b85e9aee0a2ae51e6a4dea3274e27f05c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"564da714f5248f2457f6266826c46dd1b2e5a181","unresolved":false,"context_lines":[{"line_number":69,"context_line":"Examples of appropriate content:"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"- Which tox env is the test entry point and which tools to avoid."},{"line_number":72,"context_line":"- Upstream review workflow (Gerrit, not GitHub PRs)."},{"line_number":73,"context_line":"- Commit trailer conventions specific to this project."},{"line_number":74,"context_line":"- Routing pointers to authoritative sources."},{"line_number":75,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"99a3ab73_fc6a5e34","line":72,"in_reply_to":"dbd23715_fb3c068a","updated":"2026-05-27 14:43:03.000000000","message":"Done","commit_id":"9d653d0b85e9aee0a2ae51e6a4dea3274e27f05c"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"bb543133d23f847e7f41fd7070e4d8fc688ad428","unresolved":true,"context_lines":[{"line_number":70,"context_line":""},{"line_number":71,"context_line":"- Which tox env is the test entry point and which tools to avoid."},{"line_number":72,"context_line":"- Upstream review workflow (Gerrit, not GitHub PRs)."},{"line_number":73,"context_line":"- Commit trailer conventions specific to this project."},{"line_number":74,"context_line":"- Routing pointers to authoritative sources."},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"Note that rules enforced by the linter (hacking checks, mypy) do not"}],"source_content_type":"text/x-rst","patch_set":5,"id":"8cd658a3_1ee9c63f","line":73,"updated":"2026-04-24 12:16:04.000000000","message":"and openstack generic commit message guideline with trailer definitons like https://wiki.openstack.org/wiki/GitCommitMessages","commit_id":"9d653d0b85e9aee0a2ae51e6a4dea3274e27f05c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"564da714f5248f2457f6266826c46dd1b2e5a181","unresolved":false,"context_lines":[{"line_number":70,"context_line":""},{"line_number":71,"context_line":"- Which tox env is the test entry point and which tools to avoid."},{"line_number":72,"context_line":"- Upstream review workflow (Gerrit, not GitHub PRs)."},{"line_number":73,"context_line":"- Commit trailer conventions specific to this project."},{"line_number":74,"context_line":"- Routing pointers to authoritative sources."},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"Note that rules enforced by the linter (hacking checks, mypy) do not"}],"source_content_type":"text/x-rst","patch_set":5,"id":"d309f4a5_5b8769c0","line":73,"in_reply_to":"8cd658a3_1ee9c63f","updated":"2026-05-27 14:43:03.000000000","message":"i added a commit message doc and it links to that.\n\ni also created a skill for this so i have mostly removed the commit message guidance from here and the agents.md","commit_id":"9d653d0b85e9aee0a2ae51e6a4dea3274e27f05c"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"bb543133d23f847e7f41fd7070e4d8fc688ad428","unresolved":true,"context_lines":[{"line_number":71,"context_line":"- Which tox env is the test entry point and which tools to avoid."},{"line_number":72,"context_line":"- Upstream review workflow (Gerrit, not GitHub PRs)."},{"line_number":73,"context_line":"- Commit trailer conventions specific to this project."},{"line_number":74,"context_line":"- Routing pointers to authoritative sources."},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"Note that rules enforced by the linter (hacking checks, mypy) do not"},{"line_number":77,"context_line":"belong here — ``tox -e pep8`` will catch them automatically."}],"source_content_type":"text/x-rst","patch_set":5,"id":"1541e93d_7fe94fb7","line":74,"updated":"2026-04-24 12:16:04.000000000","message":"+1","commit_id":"9d653d0b85e9aee0a2ae51e6a4dea3274e27f05c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"564da714f5248f2457f6266826c46dd1b2e5a181","unresolved":false,"context_lines":[{"line_number":71,"context_line":"- Which tox env is the test entry point and which tools to avoid."},{"line_number":72,"context_line":"- Upstream review workflow (Gerrit, not GitHub PRs)."},{"line_number":73,"context_line":"- Commit trailer conventions specific to this project."},{"line_number":74,"context_line":"- Routing pointers to authoritative sources."},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"Note that rules enforced by the linter (hacking checks, mypy) do not"},{"line_number":77,"context_line":"belong here — ``tox -e pep8`` will catch them automatically."}],"source_content_type":"text/x-rst","patch_set":5,"id":"c73742f3_a13bad78","line":74,"in_reply_to":"1541e93d_7fe94fb7","updated":"2026-05-27 14:43:03.000000000","message":"Acknowledged","commit_id":"9d653d0b85e9aee0a2ae51e6a4dea3274e27f05c"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"bb543133d23f847e7f41fd7070e4d8fc688ad428","unresolved":true,"context_lines":[{"line_number":73,"context_line":"- Commit trailer conventions specific to this project."},{"line_number":74,"context_line":"- Routing pointers to authoritative sources."},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"Note that rules enforced by the linter (hacking checks, mypy) do not"},{"line_number":77,"context_line":"belong here — ``tox -e pep8`` will catch them automatically."},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"What Does NOT Belong in AGENTS.md"},{"line_number":80,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":5,"id":"ce7d82ab_7f71c340","line":77,"range":{"start_line":76,"start_character":0,"end_line":77,"end_character":60},"updated":"2026-04-24 12:16:04.000000000","message":"I would make this a top level generic rule:\nPrefer deterministic tooling to enforce our rules (linters, hancking, a test fixture, a bash script) over English prose defining the rule and LLM enforcing it.","commit_id":"9d653d0b85e9aee0a2ae51e6a4dea3274e27f05c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"564da714f5248f2457f6266826c46dd1b2e5a181","unresolved":false,"context_lines":[{"line_number":73,"context_line":"- Commit trailer conventions specific to this project."},{"line_number":74,"context_line":"- Routing pointers to authoritative sources."},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"Note that rules enforced by the linter (hacking checks, mypy) do not"},{"line_number":77,"context_line":"belong here — ``tox -e pep8`` will catch them automatically."},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"What Does NOT Belong in AGENTS.md"},{"line_number":80,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":5,"id":"d12c3972_d34e1848","line":77,"range":{"start_line":76,"start_character":0,"end_line":77,"end_character":60},"in_reply_to":"ce7d82ab_7f71c340","updated":"2026-05-27 14:43:03.000000000","message":"Done","commit_id":"9d653d0b85e9aee0a2ae51e6a4dea3274e27f05c"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"bb543133d23f847e7f41fd7070e4d8fc688ad428","unresolved":true,"context_lines":[{"line_number":86,"context_line":"- Aspirational notes or in-progress plans — those go in ``ai/``."},{"line_number":87,"context_line":"- Anything that duplicates a canonical source; duplication creates"},{"line_number":88,"context_line":"  drift and degrades agent performance."},{"line_number":89,"context_line":"- Agent-only conventions and rules. If it should be followed, write a doc."},{"line_number":90,"context_line":"  if its important add it to the routing in ``AGENTS.md``."},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"Maintaining AGENTS.md"}],"source_content_type":"text/x-rst","patch_set":5,"id":"58a6bedc_98684e59","line":89,"range":{"start_line":89,"start_character":2,"end_line":89,"end_character":35},"updated":"2026-04-24 12:16:04.000000000","message":"What are those?","commit_id":"9d653d0b85e9aee0a2ae51e6a4dea3274e27f05c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"f8478ce2c14f493c5801b5026bf0d37011eb4191","unresolved":false,"context_lines":[{"line_number":86,"context_line":"- Aspirational notes or in-progress plans — those go in ``ai/``."},{"line_number":87,"context_line":"- Anything that duplicates a canonical source; duplication creates"},{"line_number":88,"context_line":"  drift and degrades agent performance."},{"line_number":89,"context_line":"- Agent-only conventions and rules. If it should be followed, write a doc."},{"line_number":90,"context_line":"  if its important add it to the routing in ``AGENTS.md``."},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"Maintaining AGENTS.md"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1303285d_aeb4fe47","line":89,"range":{"start_line":89,"start_character":2,"end_line":89,"end_character":35},"in_reply_to":"17919076_802f07dc","updated":"2026-05-29 14:45:36.000000000","message":"Acknowledged","commit_id":"9d653d0b85e9aee0a2ae51e6a4dea3274e27f05c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"564da714f5248f2457f6266826c46dd1b2e5a181","unresolved":true,"context_lines":[{"line_number":86,"context_line":"- Aspirational notes or in-progress plans — those go in ``ai/``."},{"line_number":87,"context_line":"- Anything that duplicates a canonical source; duplication creates"},{"line_number":88,"context_line":"  drift and degrades agent performance."},{"line_number":89,"context_line":"- Agent-only conventions and rules. If it should be followed, write a doc."},{"line_number":90,"context_line":"  if its important add it to the routing in ``AGENTS.md``."},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"Maintaining AGENTS.md"}],"source_content_type":"text/x-rst","patch_set":5,"id":"17919076_802f07dc","line":89,"range":{"start_line":89,"start_character":2,"end_line":89,"end_character":35},"in_reply_to":"58a6bedc_98684e59","updated":"2026-05-27 14:43:03.000000000","message":"this was my attpe to basiclly tell the agent not to create ruels only in the agent md\n\n\njust makign one up but we we said. never use metaclasses\ni dont want a agent to update the agents.md to docuemnt that i want it to add tghat to HACKING.RST or a conding convtions doc in the contibutor docs.","commit_id":"9d653d0b85e9aee0a2ae51e6a4dea3274e27f05c"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"bb543133d23f847e7f41fd7070e4d8fc688ad428","unresolved":true,"context_lines":[{"line_number":94,"context_line":""},{"line_number":95,"context_line":"``AGENTS.md`` is a living document. Treat it like code:"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"- **Prune aggressively.** If a gotcha is now covered in ``HACKING.rst``"},{"line_number":98,"context_line":"  or the contributor docs, remove it from ``AGENTS.md``."},{"line_number":99,"context_line":"- **Prefer pointers over prose.** Add a routing row before adding inline prose."},{"line_number":100,"context_line":"- **Review on structural change.** When a major subsystem changes (new linter,"},{"line_number":101,"context_line":"  workflow change) update the routing table."}],"source_content_type":"text/x-rst","patch_set":5,"id":"3db15562_5bcb5a06","line":98,"range":{"start_line":97,"start_character":0,"end_line":98,"end_character":56},"updated":"2026-04-24 12:16:04.000000000","message":"+1 but try not even adding a gotcha in the AGENTS.md but rather go and add it to hacking directly :)","commit_id":"9d653d0b85e9aee0a2ae51e6a4dea3274e27f05c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"564da714f5248f2457f6266826c46dd1b2e5a181","unresolved":true,"context_lines":[{"line_number":94,"context_line":""},{"line_number":95,"context_line":"``AGENTS.md`` is a living document. Treat it like code:"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"- **Prune aggressively.** If a gotcha is now covered in ``HACKING.rst``"},{"line_number":98,"context_line":"  or the contributor docs, remove it from ``AGENTS.md``."},{"line_number":99,"context_line":"- **Prefer pointers over prose.** Add a routing row before adding inline prose."},{"line_number":100,"context_line":"- **Review on structural change.** When a major subsystem changes (new linter,"},{"line_number":101,"context_line":"  workflow change) update the routing table."}],"source_content_type":"text/x-rst","patch_set":5,"id":"96a12010_eba97e47","line":98,"range":{"start_line":97,"start_character":0,"end_line":98,"end_character":56},"in_reply_to":"3db15562_5bcb5a06","updated":"2026-05-27 14:43:03.000000000","message":"one thing to not it only some agents ativly follow paths with @HACKING.rst for exampel\n\nso while claude and pi will do that  codex,opencode and cursor will not.\n\nso if we move ti to there it will only be followed if the agent belives is shoudl read hacking.rst\n\ni think if we see a number of compon gotchat come up in diffent repos we will end ups creatign a skill for that in the agentic-wrokflows repo and eventually removing them form the agents.md","commit_id":"9d653d0b85e9aee0a2ae51e6a4dea3274e27f05c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"f8478ce2c14f493c5801b5026bf0d37011eb4191","unresolved":false,"context_lines":[{"line_number":94,"context_line":""},{"line_number":95,"context_line":"``AGENTS.md`` is a living document. Treat it like code:"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"- **Prune aggressively.** If a gotcha is now covered in ``HACKING.rst``"},{"line_number":98,"context_line":"  or the contributor docs, remove it from ``AGENTS.md``."},{"line_number":99,"context_line":"- **Prefer pointers over prose.** Add a routing row before adding inline prose."},{"line_number":100,"context_line":"- **Review on structural change.** When a major subsystem changes (new linter,"},{"line_number":101,"context_line":"  workflow change) update the routing table."}],"source_content_type":"text/x-rst","patch_set":5,"id":"62d2a1f6_e0701a72","line":98,"range":{"start_line":97,"start_character":0,"end_line":98,"end_character":56},"in_reply_to":"96a12010_eba97e47","updated":"2026-05-29 14:45:36.000000000","message":"Acknowledged","commit_id":"9d653d0b85e9aee0a2ae51e6a4dea3274e27f05c"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"bb543133d23f847e7f41fd7070e4d8fc688ad428","unresolved":true,"context_lines":[{"line_number":96,"context_line":""},{"line_number":97,"context_line":"- **Prune aggressively.** If a gotcha is now covered in ``HACKING.rst``"},{"line_number":98,"context_line":"  or the contributor docs, remove it from ``AGENTS.md``."},{"line_number":99,"context_line":"- **Prefer pointers over prose.** Add a routing row before adding inline prose."},{"line_number":100,"context_line":"- **Review on structural change.** When a major subsystem changes (new linter,"},{"line_number":101,"context_line":"  workflow change) update the routing table."},{"line_number":102,"context_line":"- **Keep it short.** If the file approaches 100 lines, prune before adding."}],"source_content_type":"text/x-rst","patch_set":5,"id":"ef234f72_eae8a210","line":99,"updated":"2026-04-24 12:16:04.000000000","message":"I feel like this is now repeated 3 times at least. I know that LLMs OK with repetition but I feel bad about reading it. Make it a top level rule and then don\u0027t repeate it.","commit_id":"9d653d0b85e9aee0a2ae51e6a4dea3274e27f05c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"564da714f5248f2457f6266826c46dd1b2e5a181","unresolved":false,"context_lines":[{"line_number":96,"context_line":""},{"line_number":97,"context_line":"- **Prune aggressively.** If a gotcha is now covered in ``HACKING.rst``"},{"line_number":98,"context_line":"  or the contributor docs, remove it from ``AGENTS.md``."},{"line_number":99,"context_line":"- **Prefer pointers over prose.** Add a routing row before adding inline prose."},{"line_number":100,"context_line":"- **Review on structural change.** When a major subsystem changes (new linter,"},{"line_number":101,"context_line":"  workflow change) update the routing table."},{"line_number":102,"context_line":"- **Keep it short.** If the file approaches 100 lines, prune before adding."}],"source_content_type":"text/x-rst","patch_set":5,"id":"95fd42f5_7065c5bf","line":99,"in_reply_to":"ef234f72_eae8a210","updated":"2026-05-27 14:43:03.000000000","message":"Done","commit_id":"9d653d0b85e9aee0a2ae51e6a4dea3274e27f05c"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"bb543133d23f847e7f41fd7070e4d8fc688ad428","unresolved":true,"context_lines":[{"line_number":103,"context_line":"- **Less is more.** Resist legislating every edge case. A short file that"},{"line_number":104,"context_line":"  agents actually read beats a long one they skim."},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"Commit Message Conventions"},{"line_number":107,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"Agents assist; humans commit. Read-only git operations are always permitted."}],"source_content_type":"text/x-rst","patch_set":5,"id":"59ec06f2_5bee2be0","line":106,"updated":"2026-04-24 12:16:04.000000000","message":"Can we move it to a separate doc This is also for humans and we might be able to put it somewhere OpenStack top level.","commit_id":"9d653d0b85e9aee0a2ae51e6a4dea3274e27f05c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"564da714f5248f2457f6266826c46dd1b2e5a181","unresolved":false,"context_lines":[{"line_number":103,"context_line":"- **Less is more.** Resist legislating every edge case. A short file that"},{"line_number":104,"context_line":"  agents actually read beats a long one they skim."},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"Commit Message Conventions"},{"line_number":107,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"Agents assist; humans commit. Read-only git operations are always permitted."}],"source_content_type":"text/x-rst","patch_set":5,"id":"eb33ff77_9d96f7eb","line":106,"in_reply_to":"59ec06f2_5bee2be0","updated":"2026-05-27 14:43:03.000000000","message":"Done both as a doc and a propsoed skill for the workflow repo.\n\ni have been using the skill for a month now and the skill is basilly a polished verison of my quick-rules.md that i have been usign for the last year so im pretty confident that we dont need this here or in the agents.md now.","commit_id":"9d653d0b85e9aee0a2ae51e6a4dea3274e27f05c"}],"doc/source/contributor/commit-messages.rst":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"ec4d728078e37b4d42f00dc6920e005f09e4d470","unresolved":true,"context_lines":[{"line_number":5,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Nova follows the OpenStack Gerrit workflow. Commit messages should explain why"},{"line_number":8,"context_line":"the change is needed, be readable in email, and preserve the footers required by"},{"line_number":9,"context_line":"OpenStack tooling."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"For general OpenStack guidance, see the `OpenStack contributor guide commit"}],"source_content_type":"text/x-rst","patch_set":10,"id":"cbf3c795_683c45b4","line":8,"updated":"2026-06-02 12:02:19.000000000","message":"nit: line length","commit_id":"5d0bf4ba3589d729e085c43b7a63b62fb79bf921"}],"doc/source/contributor/dependencies.rst":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"ec4d728078e37b4d42f00dc6920e005f09e4d470","unresolved":true,"context_lines":[{"line_number":22,"context_line":"These are packages needed to build or validate the documentation, such as"},{"line_number":23,"context_line":"Sphinx extensions, documentation themes, release note tooling, and redirect"},{"line_number":24,"context_line":"test tools."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"System packages"},{"line_number":27,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":28,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"a6505abd_5aaae36b","line":25,"updated":"2026-06-02 12:02:19.000000000","message":"For a follow up:\n* state that we have the requirements repo that describes what are the possible dependencies and what are the maxiumum version of those dependencies supported. \n* give a pointer or generic guidance how to bump or add a new dependency that conforms with the requirements repo","commit_id":"5d0bf4ba3589d729e085c43b7a63b62fb79bf921"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"2e31142ad0b4a7dbba5b9e4e270f8d08f8128fcb","unresolved":true,"context_lines":[{"line_number":22,"context_line":"These are packages needed to build or validate the documentation, such as"},{"line_number":23,"context_line":"Sphinx extensions, documentation themes, release note tooling, and redirect"},{"line_number":24,"context_line":"test tools."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"System packages"},{"line_number":27,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":28,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"a26c6944_6be86cf3","line":25,"in_reply_to":"a6505abd_5aaae36b","updated":"2026-06-02 12:29:52.000000000","message":"oh yes thats a good idea, not only is notign that the repo exits a good thing for new contibutors we can also codify that service/libary project should not cap the upper bound locally in there requiremet fiiles as that conflict with our central managment via uc.\n\nill have to think about the example a bit.\nshould we cover the case where it is not already tracked by the requiremet repo?\nor assume it is? or perhaps both.\n\nill need ot find there docs on the topic but i can certenly link to them.\n\nfor what its worth when im addign a new tep i useually check whta the lower bound for that dep is in nova,cinder, neutorn and or ironic\n\ntypiclaly one of those 4 are already using it and go with whatever they list if there is existing usage otherwise i set the lower bound to either the release that added teh feature i need if knwo or whatever the last major release was if not.\n\ni can try and see how we woudl document that guidence but also jsut say `if unsure ask in irc or in the review for guidnce on what to use\" as a catch all\n\nperhaps i can find the last depency we added and use that as a refence commit for documentation","commit_id":"5d0bf4ba3589d729e085c43b7a63b62fb79bf921"}],"doc/source/contributor/repo-overview.rst":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"2d9dc316dcd21b80d90c3b6011e76fcc610dfafc","unresolved":true,"context_lines":[{"line_number":1,"context_line":".. _repo-overview:"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":4,"context_line":" Repo Overview"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3ef4d3e7_ccc323d2","line":1,"updated":"2026-04-14 20:50:36.000000000","message":"https://storage.gra.cloud.ovh.net/v1/AUTH_dcaab5e32b234d56b626f72581e3644c/zuul_opendev_logs_42f/openstack/42fbbbc1ea6741a8928cc429c7e35d5d/docs/contributor/repo-overview.html","commit_id":"6a41556ea2705edd701efd1f8b79ab3db2c250e4"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"96f0e4605dc1f2e4335ad4da3bd85d80c2d7c2a2","unresolved":false,"context_lines":[{"line_number":1,"context_line":".. _repo-overview:"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":4,"context_line":" Repo Overview"}],"source_content_type":"text/x-rst","patch_set":1,"id":"87392bcd_eea1b137","line":1,"in_reply_to":"3ef4d3e7_ccc323d2","updated":"2026-04-15 17:49:39.000000000","message":"Acknowledged","commit_id":"6a41556ea2705edd701efd1f8b79ab3db2c250e4"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"bb543133d23f847e7f41fd7070e4d8fc688ad428","unresolved":true,"context_lines":[{"line_number":4,"context_line":" Repo Overview"},{"line_number":5,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"A terse map of the Nova repository for contributor orientation. Agents should"},{"line_number":8,"context_line":"prefer discovering structure by reading the source directly rather than relying"},{"line_number":9,"context_line":"on this document."},{"line_number":10,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"541fcfc3_e44bafbf","line":7,"range":{"start_line":7,"start_character":64,"end_line":7,"end_character":70},"updated":"2026-04-24 12:16:04.000000000","message":"Can we phrase our doc in a way that applies to all readers? (I can imagine we sometimes needs to mention agents but try to keep it low)\n\nI.e. /Agents/Contributors/ would work here I think","commit_id":"9d653d0b85e9aee0a2ae51e6a4dea3274e27f05c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"564da714f5248f2457f6266826c46dd1b2e5a181","unresolved":true,"context_lines":[{"line_number":4,"context_line":" Repo Overview"},{"line_number":5,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"A terse map of the Nova repository for contributor orientation. Agents should"},{"line_number":8,"context_line":"prefer discovering structure by reading the source directly rather than relying"},{"line_number":9,"context_line":"on this document."},{"line_number":10,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"77aac739_56dffb4f","line":7,"range":{"start_line":7,"start_character":64,"end_line":7,"end_character":70},"in_reply_to":"541fcfc3_e44bafbf","updated":"2026-05-27 14:43:03.000000000","message":"Done although on second tough i may just remove this last sentence entirly.","commit_id":"9d653d0b85e9aee0a2ae51e6a4dea3274e27f05c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"f8478ce2c14f493c5801b5026bf0d37011eb4191","unresolved":false,"context_lines":[{"line_number":4,"context_line":" Repo Overview"},{"line_number":5,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"A terse map of the Nova repository for contributor orientation. Agents should"},{"line_number":8,"context_line":"prefer discovering structure by reading the source directly rather than relying"},{"line_number":9,"context_line":"on this document."},{"line_number":10,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"bd9d8d68_0c6a2684","line":7,"range":{"start_line":7,"start_character":64,"end_line":7,"end_character":70},"in_reply_to":"77aac739_56dffb4f","updated":"2026-05-29 14:45:36.000000000","message":"Done","commit_id":"9d653d0b85e9aee0a2ae51e6a4dea3274e27f05c"}],"doc/source/contributor/testing/eventlet-profiling.rst":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"ec4d728078e37b4d42f00dc6920e005f09e4d470","unresolved":true,"context_lines":[{"line_number":4,"context_line":""},{"line_number":5,"context_line":".. note::"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"   As of Nova 34.0.0 (2026.2 Hibiscus), most Nova services run in native threading"},{"line_number":8,"context_line":"   mode by default. This guide applies only to services running in eventlet"},{"line_number":9,"context_line":"   mode (``OS_NOVA_DISABLE_EVENTLET_PATCHING\u003dFalse``). For services running"},{"line_number":10,"context_line":"   in native threading mode, the standard Python profiling tool cProfile_ can"}],"source_content_type":"text/x-rst","patch_set":10,"id":"4de310ab_6d5fd022","line":7,"updated":"2026-06-02 12:02:19.000000000","message":"nit: line lenght","commit_id":"5d0bf4ba3589d729e085c43b7a63b62fb79bf921"}]}
