)]}'
{".agents/rules/git-commit-messages.md":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"5f700f35f0144a2ca633f9dd264c12f6ca160ba8","unresolved":true,"context_lines":[{"line_number":4,"context_line":"  trailers (Assisted-By, Signed-off-by, Change-Id), trailer ordering and"},{"line_number":5,"context_line":"  preservation, 72-character line wrapping, heredoc quoting, and style"},{"line_number":6,"context_line":"  conventions. Use when creating, amending, or rewording git commits."},{"line_number":7,"context_line":"alwaysApply: false"},{"line_number":8,"context_line":"---"},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"# Git Commit Message Formatting"}],"source_content_type":"text/x-markdown","patch_set":3,"id":"a439f43d_017da790","line":7,"updated":"2026-11-06 19:21:10.000000000","message":"What does this mean/do? Is there a spec somewhere for these sorts of flags?","commit_id":"09a9d8a5fce34c6adc6e4d78a7f6b455f8a390cf"},{"author":{"_account_id":38368,"name":"Christian Ohanaja","display_name":"Christian Ohanaja","email":"cohanaja@nvidia.com","username":"cohanaja"},"change_message_id":"799fbf8725987bf310e325f637d012a3f3e0131f","unresolved":true,"context_lines":[{"line_number":4,"context_line":"  trailers (Assisted-By, Signed-off-by, Change-Id), trailer ordering and"},{"line_number":5,"context_line":"  preservation, 72-character line wrapping, heredoc quoting, and style"},{"line_number":6,"context_line":"  conventions. Use when creating, amending, or rewording git commits."},{"line_number":7,"context_line":"alwaysApply: false"},{"line_number":8,"context_line":"---"},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"# Git Commit Message Formatting"}],"source_content_type":"text/x-markdown","patch_set":3,"id":"df3b3c3e_49568dd2","line":7,"in_reply_to":"a439f43d_017da790","updated":"2026-11-06 22:50:01.000000000","message":"This was something that I cloned over from Neutron\u0027s version of the skill, alwaysApply is a flag (though seemingly Cursor specific...) that makes the rule apply to every msg. It\u0027s set to false both here + in the original since I figure we don\u0027t want to consider git commit msg rules all the time\n\nhttps://cursor.com/docs/rules#rule-file-format","commit_id":"09a9d8a5fce34c6adc6e4d78a7f6b455f8a390cf"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"8223fb5b8d7edc4051cc329985fa90a4bfc8a3fe","unresolved":false,"context_lines":[{"line_number":4,"context_line":"  trailers (Assisted-By, Signed-off-by, Change-Id), trailer ordering and"},{"line_number":5,"context_line":"  preservation, 72-character line wrapping, heredoc quoting, and style"},{"line_number":6,"context_line":"  conventions. Use when creating, amending, or rewording git commits."},{"line_number":7,"context_line":"alwaysApply: false"},{"line_number":8,"context_line":"---"},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"# Git Commit Message Formatting"}],"source_content_type":"text/x-markdown","patch_set":3,"id":"457f0a6c_c891f5ec","line":7,"in_reply_to":"df3b3c3e_49568dd2","updated":"2026-11-07 00:31:49.000000000","message":"Ack, thanks","commit_id":"09a9d8a5fce34c6adc6e4d78a7f6b455f8a390cf"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"5f700f35f0144a2ca633f9dd264c12f6ca160ba8","unresolved":true,"context_lines":[{"line_number":36,"context_line":""},{"line_number":37,"context_line":"### Preserving existing trailers"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"When amending or rewording a commit that already contains trailers, preserve"},{"line_number":40,"context_line":"them:"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"- **Change-Id** — always keep the existing value; never regenerate it."}],"source_content_type":"text/x-markdown","patch_set":3,"id":"31d8916c_39b29e0b","line":39,"range":{"start_line":39,"start_character":0,"end_line":39,"end_character":35},"updated":"2026-11-06 19:21:10.000000000","message":"Should we call out that original authorship should be preserved when rewording or otherwise amending a commit?","commit_id":"09a9d8a5fce34c6adc6e4d78a7f6b455f8a390cf"},{"author":{"_account_id":38368,"name":"Christian Ohanaja","display_name":"Christian Ohanaja","email":"cohanaja@nvidia.com","username":"cohanaja"},"change_message_id":"799fbf8725987bf310e325f637d012a3f3e0131f","unresolved":false,"context_lines":[{"line_number":36,"context_line":""},{"line_number":37,"context_line":"### Preserving existing trailers"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"When amending or rewording a commit that already contains trailers, preserve"},{"line_number":40,"context_line":"them:"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"- **Change-Id** — always keep the existing value; never regenerate it."}],"source_content_type":"text/x-markdown","patch_set":3,"id":"addca5d3_302b8457","line":39,"range":{"start_line":39,"start_character":0,"end_line":39,"end_character":35},"in_reply_to":"31d8916c_39b29e0b","updated":"2026-11-06 22:50:01.000000000","message":"good idea, added!","commit_id":"09a9d8a5fce34c6adc6e4d78a7f6b455f8a390cf"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"5f700f35f0144a2ca633f9dd264c12f6ca160ba8","unresolved":true,"context_lines":[{"line_number":43,"context_line":"- **Related-Bug:** / **Closes-Bug:** — preserve any `Related-Bug: #...`"},{"line_number":44,"context_line":"  or `Closes-Bug: #...` references."},{"line_number":45,"context_line":"- **Co-Authored-By** — preserve any existing `Co-Authored-By:` lines."},{"line_number":46,"context_line":"  (Do NOT add new ones.)"},{"line_number":47,"context_line":"- **Signed-off-by** — if the commit already has a `Signed-off-by:` from"},{"line_number":48,"context_line":"  someone other than the current author, preserve it and do **not** add the"},{"line_number":49,"context_line":"  author\u0027s own `Signed-off-by`. Only add the author\u0027s `Signed-off-by` when"}],"source_content_type":"text/x-markdown","patch_set":3,"id":"ce455151_a85e8e19","line":46,"updated":"2026-11-06 19:21:10.000000000","message":"👍 I like making co-authorship a conscious choice that a human makes. The possibility of having a `Assisted-By:` tag get added by a non-author is a little awkward, but probably tolerable? We can at least see who added it by looking at the committer for the first patchset that included it.","commit_id":"09a9d8a5fce34c6adc6e4d78a7f6b455f8a390cf"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"8223fb5b8d7edc4051cc329985fa90a4bfc8a3fe","unresolved":false,"context_lines":[{"line_number":43,"context_line":"- **Related-Bug:** / **Closes-Bug:** — preserve any `Related-Bug: #...`"},{"line_number":44,"context_line":"  or `Closes-Bug: #...` references."},{"line_number":45,"context_line":"- **Co-Authored-By** — preserve any existing `Co-Authored-By:` lines."},{"line_number":46,"context_line":"  (Do NOT add new ones.)"},{"line_number":47,"context_line":"- **Signed-off-by** — if the commit already has a `Signed-off-by:` from"},{"line_number":48,"context_line":"  someone other than the current author, preserve it and do **not** add the"},{"line_number":49,"context_line":"  author\u0027s own `Signed-off-by`. Only add the author\u0027s `Signed-off-by` when"}],"source_content_type":"text/x-markdown","patch_set":3,"id":"0a1b82f2_38f75e4b","line":46,"in_reply_to":"cc47ac11_dcc057e2","updated":"2026-11-07 00:31:49.000000000","message":"Oh for sure, definitely better to err on the side of adding `Assisted-By:` any time bots are touching it. Just thinking about edge cases.","commit_id":"09a9d8a5fce34c6adc6e4d78a7f6b455f8a390cf"},{"author":{"_account_id":38368,"name":"Christian Ohanaja","display_name":"Christian Ohanaja","email":"cohanaja@nvidia.com","username":"cohanaja"},"change_message_id":"799fbf8725987bf310e325f637d012a3f3e0131f","unresolved":true,"context_lines":[{"line_number":43,"context_line":"- **Related-Bug:** / **Closes-Bug:** — preserve any `Related-Bug: #...`"},{"line_number":44,"context_line":"  or `Closes-Bug: #...` references."},{"line_number":45,"context_line":"- **Co-Authored-By** — preserve any existing `Co-Authored-By:` lines."},{"line_number":46,"context_line":"  (Do NOT add new ones.)"},{"line_number":47,"context_line":"- **Signed-off-by** — if the commit already has a `Signed-off-by:` from"},{"line_number":48,"context_line":"  someone other than the current author, preserve it and do **not** add the"},{"line_number":49,"context_line":"  author\u0027s own `Signed-off-by`. Only add the author\u0027s `Signed-off-by` when"}],"source_content_type":"text/x-markdown","patch_set":3,"id":"cc47ac11_dcc057e2","line":46,"in_reply_to":"ce455151_a85e8e19","updated":"2026-11-06 22:50:01.000000000","message":"👍 Consider as well a universe where we get some bot to go over the abandoned patches over the last 2y or so and polish them up to be ready for merge (or just a situation where someone puts up a squash patch that needs some further iteration)... I believe it kinda makes sense in these cases at least?","commit_id":"09a9d8a5fce34c6adc6e4d78a7f6b455f8a390cf"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"5f700f35f0144a2ca633f9dd264c12f6ca160ba8","unresolved":true,"context_lines":[{"line_number":76,"context_line":"  word boundaries; break long bullet items and code references across lines"},{"line_number":77,"context_line":"  when needed."},{"line_number":78,"context_line":"- Wrap method, function, and variable names in double backticks"},{"line_number":79,"context_line":"  (``` `` ```), e.g. ``get_socket()``, ``bind_port``."},{"line_number":80,"context_line":"- The title may include a lowercase prefix followed by `:` to indicate the"},{"line_number":81,"context_line":"  subsystem or area, e.g. `container:`, `replicator:`, `s3api:`, `auditor:`, `ai:`. Only"},{"line_number":82,"context_line":"  add a prefix when the change is scoped to a specific subsystem."}],"source_content_type":"text/x-markdown","patch_set":3,"id":"1fafe49b_33e23813","line":79,"updated":"2026-11-06 19:21:10.000000000","message":"IME we have more of a preference for single backticks:\n```\n% git log --grep \u0027`\u0027 | wc -l\n    2728\n% git log --grep \u0027``\u0027 | wc -l\n     189\n```","commit_id":"09a9d8a5fce34c6adc6e4d78a7f6b455f8a390cf"},{"author":{"_account_id":38368,"name":"Christian Ohanaja","display_name":"Christian Ohanaja","email":"cohanaja@nvidia.com","username":"cohanaja"},"change_message_id":"799fbf8725987bf310e325f637d012a3f3e0131f","unresolved":false,"context_lines":[{"line_number":76,"context_line":"  word boundaries; break long bullet items and code references across lines"},{"line_number":77,"context_line":"  when needed."},{"line_number":78,"context_line":"- Wrap method, function, and variable names in double backticks"},{"line_number":79,"context_line":"  (``` `` ```), e.g. ``get_socket()``, ``bind_port``."},{"line_number":80,"context_line":"- The title may include a lowercase prefix followed by `:` to indicate the"},{"line_number":81,"context_line":"  subsystem or area, e.g. `container:`, `replicator:`, `s3api:`, `auditor:`, `ai:`. Only"},{"line_number":82,"context_line":"  add a prefix when the change is scoped to a specific subsystem."}],"source_content_type":"text/x-markdown","patch_set":3,"id":"5d333b03_bec554b8","line":79,"in_reply_to":"1fafe49b_33e23813","updated":"2026-11-06 22:50:01.000000000","message":"Done","commit_id":"09a9d8a5fce34c6adc6e4d78a7f6b455f8a390cf"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"5f700f35f0144a2ca633f9dd264c12f6ca160ba8","unresolved":true,"context_lines":[{"line_number":79,"context_line":"  (``` `` ```), e.g. ``get_socket()``, ``bind_port``."},{"line_number":80,"context_line":"- The title may include a lowercase prefix followed by `:` to indicate the"},{"line_number":81,"context_line":"  subsystem or area, e.g. `container:`, `replicator:`, `s3api:`, `auditor:`, `ai:`. Only"},{"line_number":82,"context_line":"  add a prefix when the change is scoped to a specific subsystem."},{"line_number":83,"context_line":""},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"## Commit via shell"}],"source_content_type":"text/x-markdown","patch_set":3,"id":"6c31ea24_a33ecdad","line":82,"updated":"2026-11-06 19:21:10.000000000","message":"Might be worth calling out that `tests:` is a particularly useful signal on test-only changes for reviewers and later release-notes-compilers.","commit_id":"09a9d8a5fce34c6adc6e4d78a7f6b455f8a390cf"},{"author":{"_account_id":38368,"name":"Christian Ohanaja","display_name":"Christian Ohanaja","email":"cohanaja@nvidia.com","username":"cohanaja"},"change_message_id":"799fbf8725987bf310e325f637d012a3f3e0131f","unresolved":false,"context_lines":[{"line_number":79,"context_line":"  (``` `` ```), e.g. ``get_socket()``, ``bind_port``."},{"line_number":80,"context_line":"- The title may include a lowercase prefix followed by `:` to indicate the"},{"line_number":81,"context_line":"  subsystem or area, e.g. `container:`, `replicator:`, `s3api:`, `auditor:`, `ai:`. Only"},{"line_number":82,"context_line":"  add a prefix when the change is scoped to a specific subsystem."},{"line_number":83,"context_line":""},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"## Commit via shell"}],"source_content_type":"text/x-markdown","patch_set":3,"id":"932dc549_d3d0efac","line":82,"in_reply_to":"6c31ea24_a33ecdad","updated":"2026-11-06 22:50:01.000000000","message":"Done","commit_id":"09a9d8a5fce34c6adc6e4d78a7f6b455f8a390cf"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"5f700f35f0144a2ca633f9dd264c12f6ca160ba8","unresolved":true,"context_lines":[{"line_number":87,"context_line":"- Only create commits when the user explicitly asks."},{"line_number":88,"context_line":"- Use `--author` **and** `GIT_COMMITTER_NAME` / `GIT_COMMITTER_EMAIL` from"},{"line_number":89,"context_line":"  the author\u0027s configured git identity. Both author and committer must match"},{"line_number":90,"context_line":"  to avoid Gerrit rejections."},{"line_number":91,"context_line":"- Pass the message with a **quoted** heredoc so backticks are not stripped"},{"line_number":92,"context_line":"  by bash command substitution:"},{"line_number":93,"context_line":""}],"source_content_type":"text/x-markdown","patch_set":3,"id":"23638759_7684e810","line":90,"updated":"2026-11-06 19:21:10.000000000","message":"If we want it to use the configured git identity... do we actually need to have it pass `GIT_COMMITTER_NAME` / `GIT_COMMITTER_EMAIL` / `--author`? Shouldn\u0027t that get picked up automatically?","commit_id":"09a9d8a5fce34c6adc6e4d78a7f6b455f8a390cf"},{"author":{"_account_id":38368,"name":"Christian Ohanaja","display_name":"Christian Ohanaja","email":"cohanaja@nvidia.com","username":"cohanaja"},"change_message_id":"799fbf8725987bf310e325f637d012a3f3e0131f","unresolved":false,"context_lines":[{"line_number":87,"context_line":"- Only create commits when the user explicitly asks."},{"line_number":88,"context_line":"- Use `--author` **and** `GIT_COMMITTER_NAME` / `GIT_COMMITTER_EMAIL` from"},{"line_number":89,"context_line":"  the author\u0027s configured git identity. Both author and committer must match"},{"line_number":90,"context_line":"  to avoid Gerrit rejections."},{"line_number":91,"context_line":"- Pass the message with a **quoted** heredoc so backticks are not stripped"},{"line_number":92,"context_line":"  by bash command substitution:"},{"line_number":93,"context_line":""}],"source_content_type":"text/x-markdown","patch_set":3,"id":"61af3ac8_9853e693","line":90,"in_reply_to":"23638759_7684e810","updated":"2026-11-06 22:50:01.000000000","message":"It should, yah! corrected.","commit_id":"09a9d8a5fce34c6adc6e4d78a7f6b455f8a390cf"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"5f700f35f0144a2ca633f9dd264c12f6ca160ba8","unresolved":false,"context_lines":[{"line_number":93,"context_line":""},{"line_number":94,"context_line":"```bash"},{"line_number":95,"context_line":"GIT_COMMITTER_NAME\u003d\"Author Name\" GIT_COMMITTER_EMAIL\u003d\"author@example.com\" \\"},{"line_number":96,"context_line":"  git commit --author\u003d\"Author Name \u003cauthor@example.com\u003e\" -m \"$(cat \u003c\u003c\u0027EOF\u0027"},{"line_number":97,"context_line":"doc: Document ``get_socket()`` bind settings in the WSGI guide"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"Explain that ``swift.common.wsgi.get_socket()`` binds the server"}],"source_content_type":"text/x-markdown","patch_set":3,"id":"a2087067_16312124","line":96,"range":{"start_line":96,"start_character":13,"end_line":96,"end_character":21},"updated":"2026-11-06 19:21:10.000000000","message":"A little disappointing that `git` doesn\u0027t offer a `--committer` flag, too.","commit_id":"09a9d8a5fce34c6adc6e4d78a7f6b455f8a390cf"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"8223fb5b8d7edc4051cc329985fa90a4bfc8a3fe","unresolved":true,"context_lines":[{"line_number":41,"context_line":"commit already contains trailers, preserve them:"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"- **Change-Id** — always keep the existing value; never regenerate it."},{"line_number":44,"context_line":"- **Related-Bug:** / **Closes-Bug:** — preserve any `Related-Bug: #...`"},{"line_number":45,"context_line":"  or `Closes-Bug: #...` references."},{"line_number":46,"context_line":"- **Co-Authored-By** — preserve any existing `Co-Authored-By:` lines."},{"line_number":47,"context_line":"  (Do NOT add new ones.)"}],"source_content_type":"text/x-markdown","patch_set":4,"id":"3b2de03d_dda5b385","line":44,"range":{"start_line":44,"start_character":2,"end_line":44,"end_character":36},"updated":"2026-11-07 00:31:49.000000000","message":"Odd how these are the only bolded trailers to have colons.","commit_id":"2f77952d369bc462064f52bd761b6273a44d721f"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"8223fb5b8d7edc4051cc329985fa90a4bfc8a3fe","unresolved":true,"context_lines":[{"line_number":47,"context_line":"  (Do NOT add new ones.)"},{"line_number":48,"context_line":"- **Signed-off-by** — if the commit already has a `Signed-off-by:` from"},{"line_number":49,"context_line":"  someone other than the current author, preserve it and do **not** add the"},{"line_number":50,"context_line":"  author\u0027s own `Signed-off-by`. Only add the author\u0027s `Signed-off-by` when"},{"line_number":51,"context_line":"  no other `Signed-off-by` is present."},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"Place preserved trailers **above** `Assisted-By`. Lines marked `(optional)`"}],"source_content_type":"text/x-markdown","patch_set":4,"id":"4724718a_82904147","line":50,"range":{"start_line":50,"start_character":16,"end_line":50,"end_character":29},"updated":"2026-11-07 00:31:49.000000000","message":"Oh, funny: starting here, it stops including the colon on the back-ticked trailer. Here, the other `Signed-off-by`s, and an `Assisted-By` in the next paragraph.","commit_id":"2f77952d369bc462064f52bd761b6273a44d721f"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"8223fb5b8d7edc4051cc329985fa90a4bfc8a3fe","unresolved":true,"context_lines":[{"line_number":48,"context_line":"- **Signed-off-by** — if the commit already has a `Signed-off-by:` from"},{"line_number":49,"context_line":"  someone other than the current author, preserve it and do **not** add the"},{"line_number":50,"context_line":"  author\u0027s own `Signed-off-by`. Only add the author\u0027s `Signed-off-by` when"},{"line_number":51,"context_line":"  no other `Signed-off-by` is present."},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"Place preserved trailers **above** `Assisted-By`. Lines marked `(optional)`"},{"line_number":54,"context_line":"appear only when the original commit had them:"}],"source_content_type":"text/x-markdown","patch_set":4,"id":"e7e1203f_baf8cb78","line":51,"updated":"2026-11-07 00:31:49.000000000","message":"Oh yeah, might want to call out `Depends-On:` as a possible trailer, too.\n\nThere\u0027s also `Needed-By:` and `Related-Change:` trailers that we\u0027ll occasionally see. I think I only ever use `Needed-By:` when I\u0027m proposing something to `openstack/requirements`, though, and while I personally find `Related-Change:` useful, I don\u0027t think there\u0027s any sort of formal standard or even tooling regarding it (aside from how gerrit will make *any* change-id or url in the commit message a link).","commit_id":"2f77952d369bc462064f52bd761b6273a44d721f"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"8223fb5b8d7edc4051cc329985fa90a4bfc8a3fe","unresolved":false,"context_lines":[{"line_number":106,"context_line":")\""},{"line_number":107,"context_line":"```"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"- Use `\u003c\u003c\u0027EOF\u0027` (quoted delimiter), not `\u003c\u003cEOF`. Unquoted heredocs treat"},{"line_number":110,"context_line":"  `` `...` `` as command substitution and silently remove backticks from the"},{"line_number":111,"context_line":"  message."},{"line_number":112,"context_line":"- Generate `Change-Id` for new commits; preserve the original `Change-Id`"},{"line_number":113,"context_line":"  when amending."}],"source_content_type":"text/x-markdown","patch_set":4,"id":"b856ad80_793febfa","line":111,"range":{"start_line":109,"start_character":49,"end_line":111,"end_character":10},"updated":"2026-11-07 00:31:49.000000000","message":"TIL! Yeah, definitely *don\u0027t* want that.","commit_id":"2f77952d369bc462064f52bd761b6273a44d721f"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"8223fb5b8d7edc4051cc329985fa90a4bfc8a3fe","unresolved":true,"context_lines":[{"line_number":109,"context_line":"- Use `\u003c\u003c\u0027EOF\u0027` (quoted delimiter), not `\u003c\u003cEOF`. Unquoted heredocs treat"},{"line_number":110,"context_line":"  `` `...` `` as command substitution and silently remove backticks from the"},{"line_number":111,"context_line":"  message."},{"line_number":112,"context_line":"- Generate `Change-Id` for new commits; preserve the original `Change-Id`"},{"line_number":113,"context_line":"  when amending."}],"source_content_type":"text/x-markdown","patch_set":4,"id":"a54fb9f1_6f0cfec0","line":112,"range":{"start_line":112,"start_character":2,"end_line":112,"end_character":38},"updated":"2026-11-07 00:31:49.000000000","message":"Should we be encouraging agents to generate these themselves, or let them rely on `git review --setup` to have installed an appropriate commit hook?","commit_id":"2f77952d369bc462064f52bd761b6273a44d721f"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"5f700f35f0144a2ca633f9dd264c12f6ca160ba8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"846615ee_215183cd","updated":"2026-11-06 19:21:10.000000000","message":"Nice that we can get a preview at https://opendev.org/openstack/swift/src/commit/09a9d8a5fce34c6adc6e4d78a7f6b455f8a390cf/AGENTS.md -- was handy in confirming all those internal links work. I found a handful of things that didn\u0027t seem to be accurate, though.","commit_id":"09a9d8a5fce34c6adc6e4d78a7f6b455f8a390cf"},{"author":{"_account_id":38368,"name":"Christian Ohanaja","display_name":"Christian Ohanaja","email":"cohanaja@nvidia.com","username":"cohanaja"},"change_message_id":"58802ef5944770926196c9ad22d0cd2af61bc1b9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"ba94e5a9_e911d8cd","updated":"2026-11-03 18:42:52.000000000","message":"recheck","commit_id":"09a9d8a5fce34c6adc6e4d78a7f6b455f8a390cf"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"8223fb5b8d7edc4051cc329985fa90a4bfc8a3fe","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"ec20983a_fb850468","updated":"2026-11-07 00:31:49.000000000","message":"Yeah, I think I\u0027m on board with this. I noticed a few inconsistencies, but honestly, IDK how much they matter -- the whole point is that none of this is actually for human consumption anyway, right?","commit_id":"2f77952d369bc462064f52bd761b6273a44d721f"}],"AGENTS.md":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"5f700f35f0144a2ca633f9dd264c12f6ca160ba8","unresolved":true,"context_lines":[{"line_number":4,"context_line":""},{"line_number":5,"context_line":"## Workflow"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"**Session memory:** Write plans, notes, and ephemeral files to `.tmp/`"},{"line_number":8,"context_line":"(gitignored) rather than the system temporary directory."},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"**For non-trivial planning**, inspect deps and tooling:"},{"line_number":11,"context_line":"`pyproject.toml` · `tox.ini` · `.pre-commit-config.yaml` ·"}],"source_content_type":"text/x-markdown","patch_set":3,"id":"8d3bd598_d6f2afd6","line":8,"range":{"start_line":7,"start_character":63,"end_line":8,"end_character":12},"updated":"2026-11-06 19:21:10.000000000","message":"Is it? https://github.com/openstack/swift/blob/master/.gitignore doesn\u0027t seem to think so.","commit_id":"09a9d8a5fce34c6adc6e4d78a7f6b455f8a390cf"},{"author":{"_account_id":38368,"name":"Christian Ohanaja","display_name":"Christian Ohanaja","email":"cohanaja@nvidia.com","username":"cohanaja"},"change_message_id":"799fbf8725987bf310e325f637d012a3f3e0131f","unresolved":false,"context_lines":[{"line_number":4,"context_line":""},{"line_number":5,"context_line":"## Workflow"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"**Session memory:** Write plans, notes, and ephemeral files to `.tmp/`"},{"line_number":8,"context_line":"(gitignored) rather than the system temporary directory."},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"**For non-trivial planning**, inspect deps and tooling:"},{"line_number":11,"context_line":"`pyproject.toml` · `tox.ini` · `.pre-commit-config.yaml` ·"}],"source_content_type":"text/x-markdown","patch_set":3,"id":"ed4831d5_deb849d9","line":8,"range":{"start_line":7,"start_character":63,"end_line":8,"end_character":12},"in_reply_to":"8d3bd598_d6f2afd6","updated":"2026-11-06 22:50:01.000000000","message":"this MR adds .tmp + the other extra mainstream agent/harness directories to `.gitignore` as well","commit_id":"09a9d8a5fce34c6adc6e4d78a7f6b455f8a390cf"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"5f700f35f0144a2ca633f9dd264c12f6ca160ba8","unresolved":true,"context_lines":[{"line_number":8,"context_line":"(gitignored) rather than the system temporary directory."},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"**For non-trivial planning**, inspect deps and tooling:"},{"line_number":11,"context_line":"`pyproject.toml` · `tox.ini` · `.pre-commit-config.yaml` ·"},{"line_number":12,"context_line":"`requirements.txt` · `test-requirements.txt`"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"**Tests**: Swift uses `pytest`, commonly through `tox`."}],"source_content_type":"text/x-markdown","patch_set":3,"id":"114bd38e_c098be49","line":11,"range":{"start_line":11,"start_character":32,"end_line":11,"end_character":55},"updated":"2026-11-06 19:21:10.000000000","message":"The what now?","commit_id":"09a9d8a5fce34c6adc6e4d78a7f6b455f8a390cf"},{"author":{"_account_id":38368,"name":"Christian Ohanaja","display_name":"Christian Ohanaja","email":"cohanaja@nvidia.com","username":"cohanaja"},"change_message_id":"799fbf8725987bf310e325f637d012a3f3e0131f","unresolved":false,"context_lines":[{"line_number":8,"context_line":"(gitignored) rather than the system temporary directory."},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"**For non-trivial planning**, inspect deps and tooling:"},{"line_number":11,"context_line":"`pyproject.toml` · `tox.ini` · `.pre-commit-config.yaml` ·"},{"line_number":12,"context_line":"`requirements.txt` · `test-requirements.txt`"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"**Tests**: Swift uses `pytest`, commonly through `tox`."}],"source_content_type":"text/x-markdown","patch_set":3,"id":"205364a1_c8ce3ff4","line":11,"range":{"start_line":11,"start_character":32,"end_line":11,"end_character":55},"in_reply_to":"114bd38e_c098be49","updated":"2026-11-06 22:50:01.000000000","message":"slipped me by while I was making the swift-specific edits, whoops!","commit_id":"09a9d8a5fce34c6adc6e4d78a7f6b455f8a390cf"}]}
