)]}'
{"/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"}],"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":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":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":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":"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":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":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":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":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":"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":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"}],"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":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":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":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":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":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":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":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":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":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":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":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":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":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":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":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"}],"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"}]}
