# Guidelines for using AI tools

The person submitting an issue or PR is responsible for its content,
regardless of whether AI tools were used in its creation. Generative AI
tools can produce output quickly, but discretion, good judgment, and
critical thinking are the foundation of all good contributions. We value
good code, concise accurate documentation, and well scoped PRs without
unneeded code churn.

## Considerations for success

Authors must review the work done by AI tooling in detail to ensure it
actually makes sense before proposing it as a PR or filing it as an issue.

We expect PR authors and those filing issues to be able to explain their
proposed changes in their own words.

Disclosure of the use of AI tools in the PR description is appreciated,
while not required. Be prepared to explain how the tool was used and what
changes it made.

Whether you are using AI tools or not, keep the following principles in
mind for the quality of your contribution:

- Consider whether the change is necessary
- Make minimal, focused changes
- Follow existing coding style and patterns
- Write tests that exercise the change
- Keep backwards compatibility with prior releases in mind. Existing
  tests may be ensuring specific API behaviors are maintained.

Pay close attention to AI generated recommendations for testing changes.
Always review the output before opening a pull request or issue,
including proposed PR or issue titles and descriptions.

## Acceptable uses

Some of the acceptable uses of generative AI include:

- Assistance with writing comments, especially in a non-native language
- Gaining understanding of existing code
- Supplementing contributor knowledge for code, tests, and documentation

## Unacceptable uses

Maintainers may close issues and PRs that are not useful or productive,
regardless of whether AI tools were used or not.

If a contributor repeatedly opens unproductive issues or PRs, they may be
blocked from contributing to the project because it is disruptive and
disrespectful of the maintainers time.

It is not acceptable to alter or bypass existing tests, or remove desired
functionality, in order to make a failing test pass. Such changes are not
a real fix.
