Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
62 commits
Select commit Hold shift + click to select a range
772edeb
Add an LLM policy for `rust-lang/rust`
jyn514 Apr 17, 2026
815da6e
address some of jieyouxu's comments
jyn514 Apr 17, 2026
17a35f4
revert extraneous change
jyn514 Apr 17, 2026
61e5e2c
address some more review comments
jyn514 Apr 18, 2026
8ee5ed4
more review comments
jyn514 Apr 18, 2026
7cd8c17
more wording
jyn514 Apr 18, 2026
2db7465
rewrite "trivial changes" section
jyn514 Apr 21, 2026
9b2b3c2
rewrite intro to 'Allowed with caveats'
jyn514 Apr 21, 2026
e3b1394
Be more specific in "Moderation policy"
jyn514 Apr 21, 2026
e3f2aec
Add explicit conditions for modification or removal
jyn514 Apr 21, 2026
864428f
mention that the policy is intentionally conservative
jyn514 Apr 21, 2026
593d538
extend "Penalties" section with sentencing guidelines
jyn514 Apr 21, 2026
75050a2
be more clear where the CoC is invoked
jyn514 Apr 23, 2026
b6a8662
minor edits; add "Motivation and guiding principles" section
jyn514 Apr 28, 2026
9a944f7
Relax and clarify moderation guidelines
jyn514 Apr 28, 2026
14956c3
Carve out a space for experimentation
jyn514 Apr 28, 2026
8fe7281
fix typo
jyn514 Apr 28, 2026
791e46f
recommend adversarial review from another LLM
jyn514 Apr 28, 2026
8520038
markdown formatting
jyn514 Apr 28, 2026
b14e8ca
more markdown formatting
jyn514 Apr 28, 2026
69b6dc1
Note that explicitly marking LLM content is ok
jyn514 May 13, 2026
d682475
Exempt t-security-response from a few requirements
jyn514 May 13, 2026
ea4e504
Make "solicited" even stricter
jyn514 May 13, 2026
7eeecbb
Carve out a space for experimentation
jyn514 May 13, 2026
cd9aecd
Revert "Exempt t-security-response from a few requirements"
jyn514 May 13, 2026
ee4f26c
address a few of TC's concerns
jyn514 May 14, 2026
7956574
address a few of Jack's concerns
jyn514 May 14, 2026
b88855a
remove the 'additional scrutiny' examples
jyn514 May 14, 2026
4305e14
move 'using an llm to discover bugs' to the caveats section, without …
jyn514 May 14, 2026
ab6f8a4
move LLM-authored code to its own section; add a zulip stream as policy
jyn514 May 14, 2026
d9d8238
add a section about staying on-topic
jyn514 May 14, 2026
83b9363
wording
jyn514 May 14, 2026
9efffad
relax moderation policy guidelines
jyn514 May 14, 2026
24f236c
ban llms from writing safety comments
jyn514 May 15, 2026
f85aac6
Group some "personal use" bullets together
jyn514 May 15, 2026
adfc5e2
remove "by a team" phrase
jyn514 May 15, 2026
014cf85
clarify wording on harrassment policy
jyn514 May 15, 2026
db8fdae
t-lang didn't get a vote, so narrow the policy not to apply to them
jyn514 May 15, 2026
196cf63
clarify wording on modification policy
jyn514 May 15, 2026
6374d57
clarify wording on "be honest" policy
jyn514 May 15, 2026
8a1ce25
s/authored/created/g
jyn514 May 15, 2026
742d9f4
spruce up "spirit of the law" section
jyn514 May 15, 2026
235432b
wording
jyn514 May 16, 2026
9396306
further clarify moderation section
jyn514 May 16, 2026
33b1407
Add a "scope" section
jyn514 May 16, 2026
08a6b17
add back "better, not faster" quote
jyn514 May 16, 2026
3740dc5
wording
jyn514 May 16, 2026
fb37c69
delete confusing review bot sentence
jyn514 May 16, 2026
8444f54
add link to CoC
jyn514 May 16, 2026
dcbc98f
move "non-exhaustive" section to the top
jyn514 May 23, 2026
4ab78f0
wording
jyn514 May 23, 2026
063d99b
Add a "goals" section
jyn514 May 23, 2026
2262f6e
move disclosure requirement sooner in the document
jyn514 May 23, 2026
b63f793
outline some suggestions to the dev-guide
jyn514 May 23, 2026
0a76bb9
wording
jyn514 May 23, 2026
c97c483
don't depend on the concept of copyright for defining "trivial"
jyn514 May 23, 2026
32762a4
s/solicited/pre-arranged
jyn514 May 23, 2026
4454408
wording
jyn514 May 23, 2026
994f5c1
mention autocomplete
jyn514 May 23, 2026
6769956
require disclosure in draft PRs, but not experimental ones
jyn514 May 23, 2026
1c7302d
wording
jyn514 May 23, 2026
39ce3bb
wording (redux)
jyn514 May 23, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions src/SUMMARY.md
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,7 @@
- [Project groups](./governance/project-groups.md)
- [Policies](./policies/index.md)
- [Crate ownership policy](./policies/crate-ownership.md)
- [LLM usage policy](./policies/llm-usage.md)
- [Infrastructure](./infra/index.md)
- [Other Installation Methods](./infra/other-installation-methods.md)
- [Archive of Rust Stable Standalone Installers](./infra/archive-stable-version-installers.md)
Expand Down
2 changes: 2 additions & 0 deletions src/how-to-start-contributing.md
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,8 @@ To achieve this goal, we want to build trust and respect of each other's time an
- Please respect the reviewers' time: allow some days between reviews, only ask for reviews when your code compiles and tests pass, or give an explanation for why you are asking for a review at that stage (you can keep them in draft state until they're ready for review)
- Try to keep comments concise, don't worry about a perfect written communication. Strive for clarity and being to the point

See also our [LLM usage policy](./policies/llm-usage.md).

[^1]: Free-Open Source Project, see: https://en.wikipedia.org/wiki/Free_and_open-source_software

### Different kinds of contributions
Expand Down
253 changes: 253 additions & 0 deletions src/policies/llm-usage.md
Comment thread
oli-obk marked this conversation as resolved.
This comment was marked as a violation of GitHub Acceptable Use Policies
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I understand you're frustrated, but I don't think this kind of language helps anyone.

About your point: you explicitly state that people are allowed to have their own opinion, but apparently they are not allowed, per you, to have an opinion on whether the discussion of ethics is relevant here.

And for the record, I don't use LLMs and I dislike them for many reasons. But I also think that setting a policy on the basis of the ethical consequences of them is not what we should do.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The missing link to said RFC: rust-lang/rfcs#3959

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not the one who decided to omit ethics from the discussion here; I'm respecting the opinions of the author on that, and conceding that it's fair to get a simpler policy out sooner in this particular case. There are allowed to be concurrent policy decisions and this policy's opinion is that focusing entirely on pragmatic labelling of LLM contributions, alongside calling out certain problematic usages, is the best way to get a policy out sooner.

Is that the best choice? No idea! But I respect the author and their wishes and have an explicit alternative that will almost certainly take longer to figure out. So, instead of bothering jyn about it, I'm inviting the discussion to happen there instead.

Original file line number Diff line number Diff line change
@@ -0,0 +1,253 @@
## LLM Usage Policy

This is a moderation policy for how LLMs are used in `rust-lang/rust`.
For additional information about the policy itself, see [the appendix](#appendix).

### Overview
Comment thread
nikomatsakis marked this conversation as resolved.

Using LLMs while working on `rust-lang/rust` is conditionally allowed, when done with care.
LLMs are not a substitute for thought,
and we do not allow them to be used in ways that risk losing our shared social and technical understanding of the project,
nor in ways that hurt our goals of creating a strong community.

The policy's guidelines are roughly as follows:

> It's fine to use LLMs to answer questions, analyze, distill, refine, check, suggest, review. But not to **create**.
Comment thread
jyn514 marked this conversation as resolved.

> LLMs work best when used as a tool to write *better*, not *faster*.

> We carve out a space for "experimentation" to inform future revisions to this policy.

#### Moderation vs guidance

This document only contains our moderation policy.
For technical guidance and suggestions, see the [rustc-dev-guide][llm-guidance].

[llm-guidance]: https://rustc-dev-guide.rust-lang.org/llm-guidance.html

### Rules
#### Legend
- ✅ Allowed.
- ❌ Banned.
- ⚠️ Allowed with caveats. Must disclose that an LLM was used.
Comment thread
jyn514 marked this conversation as resolved.
- ℹ️ Adds additional detail to the policy. These bullets are normative.
- 💡 Indicates that there are suggestions for this bullet in the dev-guide.

#### Non-exhaustive policy

This policy does not aim to be exhaustive.
If you have a use of LLMs in mind that isn't on this list, talk to people about it, and judge it in the spirit of this overview:
- Using an LLM for your own personal use is likely allowed ✅
- Showing LLM output to another human without solicitation is likely banned ❌
- Making a decision based on LLM output requires disclosure ⚠️

#### ✅ Allowed
The following are allowed.
- Any use of an LLM where you are the only one who sees the output. For example:
- Asking an LLM questions about an existing codebase.
- Asking an LLM to summarize comments on an issue or PR.
- ℹ️ This does not allow reposting the summary publicly. This only includes your own personal use.
- Asking an LLM to privately review your code or writing.
- ℹ️ This does not apply to public comments. See "review bots" under ⚠️ below.
- Writing dev-tools for your own personal use using an LLM.
- Using an LLM to generate possible solutions to an issue, learning from them, and then writing something from scratch in your own style.
- Using an LLM in the creation of clearly experimental code changes that are not meant to be reviewed but must live as PRs on `rust-lang/rust` for tooling reasons, such as to run crater or perf.
- "Clearly experimental" PRs includes things such `S-experimental` labels, `[PERF]` titles, or `r? ghost` comments.
- ℹ️ If a PR is no longer marked as clearly experimental, at that point disclosure is required.

Comment thread
traviscross marked this conversation as resolved.
Comment thread
traviscross marked this conversation as resolved.
Comment thread
jyn514 marked this conversation as resolved.
#### ❌ Banned
The following are banned.
- Comments from a personal user account that are originally created by an LLM.
- ℹ️ This also applies to issue bodies and PR descriptions.
Comment thread
traviscross marked this conversation as resolved.
- ℹ️ This does not apply if the LLM content is clearly quoted and marked, you can post that.
However, the content of the comment must stand on its own even without the LLM content; it's not a substitute for your own words.
- ℹ️ See also "machine-translation" in ⚠️ below.
- ℹ️ See also "Scope" in the appendix below.
- Documentation that is originally created by an LLM.
- ℹ️ This includes non-trivial source comments, such as doc-comments, safety comments, or multiple paragraphs of non-doc-comments.
- ℹ️ This includes compiler diagnostics.
Comment thread
jyn514 marked this conversation as resolved.
LLMs are conditionally allowed to assist with the *logic* surrounding a diagnostic (see "code changes" under ⚠️ below),
but they must not be used to create the message itself.
- Treating an LLM review as a sufficient condition to merge or reject a change.
LLM reviews, if enabled, **must** be advisory-only.
Teams can have a policy that code can be merged without review, and they can have a policy that code must be reviewed by at least one person,
but they may not have a policy that an LLM review substitutes for a human review.
- ℹ️ See "review bots" in ⚠️ below.
- ℹ️ An LLM review does not substitute for self-review. Authors are expected to review their own code before posting and after each change.

#### ⚠️ Allowed with caveats
The following are decided on a case-by-case basis.
If you are a new contributor, you should expect to be scrutinized more heavily than existing contributors,
since you haven't yet established trust with your reviewers.

All uses under "⚠️ Allowed with caveats" **must** disclose that an LLM was used.

- Using machine-translation (e.g. Google Translate) from your native language without posting your original message.
Doing so can introduce new miscommunications that weren't there originally, and prevents someone who speaks the language from providing a better translation.
- ℹ️ Posting both your original message and the translated version is always ok, but you must still disclose that machine-translation was used.
- "Trivial" code changes.
- ℹ️ Changes are trivial if there is no other way to write them, or the other ways to write them are nearly identical. For example, the following are all trivial:
- Typo fixes.
- Markdown links
- Type signatures for a trait implementation
- ℹ️ Be cautious about PRs that consist solely of trivial changes.
See also [the compiler team's typo fix policy](https://rustc-dev-guide.rust-lang.org/contributing.html#writing-documentation:~:text=Please%20notice%20that%20we%20don%E2%80%99t%20accept%20typography%2Fspellcheck%20fixes%20to%20internal%20documentation).
- For more background about concepts that inspired this policy, see
[threshold of originality](https://fsfe.org/news/2025/news-20250515-01.en.html)
and [the Google v Oracle ruling](https://en.wikipedia.org/wiki/Google_LLC_v._Oracle_America,_Inc.) that copying API declarations are fair use.
- Using an LLM to discover bugs, as long as you personally verify the bug.
Please refer to [our guidelines for fuzzers](https://rustc-dev-guide.rust-lang.org/fuzzing.html#guidelines).
- ℹ️ This also includes reviewers who use LLMs to discover flaws in unmerged code.
- ℹ️ See also "Comments from a personal user account" under ❌ above.
- Using an LLM as a "review bot" for PRs.
Copy link
Copy Markdown
Member

@kennytm kennytm Apr 19, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe I'm OOTL but I find this section situationally strange — where did the "review bot" come from?

IME AI-powered review bots that directly participates in PR discussions (esp the "app" ones) are configured by repository owner, but AFAIK r-l/r (which this policy applies solely to) did not have any such bots. I highly doubt a contributor will bring in their own review bot in public. So practically this has to be either

  • someone requested a review from Copilot, which may be we can opt-out?
  • the reviewer outsourced the review work to a coding agent, which is already covered in the sections
  • at least one team actually considered enabling such review bots in the future? as this is linked previously in that "Teams can have a policy that code can be merged without review" part, but I don't think this will ever happen given the the stance of this policy

View changes since the review

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I highly doubt a contributor will bring in their own review bot in public.

I wish it worked like that :( People can just trigger GitHub copilot, or I suppose any other review bot, and let it comment on a r-l/r PR. Some people don't even do it willingly, but GH does it automatically for them, as GH copilot has a tendency to re-enable itself even if you sometimes disable it.

It is also not possible to opt-out of the PR author requesting a Copilot review, if I remember correctly.

Copy link
Copy Markdown

@xtqqczze xtqqczze Apr 19, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I’ve seen this behavior elsewhere on GitHub, where contributors effectively use a personal account as a kind of "review bot" to comment on PRs without approval from maintainers.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It is also not possible to opt-out of the PR author requesting a Copilot review, if I remember correctly.

Yeah currently disabling review is a personal/license-owner setting, it is not possible to configure from the repository PoV 😞 but I think this is something that we may bring up to GitHub.

It may be possible to use content exclusion to blind Copilot, but I'm not sure if this hack is going to produce any overreaching effects (e.g. affecting private IDE usage too).

Copy link
Copy Markdown
Contributor

@apiraino apiraino Apr 20, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

someone requested a review from Copilot, which may be we can opt-out?

I think this is exactly the point of pointing that out in our policy. Some people trigger a "[at]copilot review" in our repos without asking us for consent. This is rude behaviour and we don't want that.

And, yes, as you point out opting out of this "trigger" is currently only a project-wide setting, not at a repository level so we are looking with GitHub if they could make this setting more fine-grained (here on Zulip a discussion with the Infra team)

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yeah, you're right; I deleted the comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I’ve seen this behavior elsewhere on GitHub, where contributors effectively use a personal account as a kind of "review bot" to comment on PRs without approval from maintainers.

Unsolicited review bots are becoming an increasing problem; for example: https://web.archive.org/web/20260426133344/https://github.com/rust-lang/rust-clippy/issues/16893#issuecomment-4321880160

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you for flagging xtqqczze - the same bot has commented in 6+ issues on the rust-clippy repo and in my case was giving unsolicited advice in a completely derailing direction (solving a specific case I obviously already worked around rather than the general case rust-lang/rust-clippy#16901 (comment))

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@xtqqczze both rust-lang/rust-clippy#16893 and rust-lang/rust-clippy#16901 are issues not PRs, and that @QEEK-AI account commented spontaneously without any summoning. So I don't think these instances fall under this "Review Bot" rule (which is still "⚠️ Allowed with caveats"). At the very least these are "Comments […] authored by an LLM" which is "❌ Banned", and they are also outright "spam" that the current CoC can already handle.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I find this review bot policy to be a messy compromise that doens't seem to be serving anyone particularly well. Speaking from general experience, it is rather frustrating as a reviewer to be met with a review request that has then already been answered by an LLM. Even if a maintainer allows the bot, that doesn't necessarily mean that the reviewer consents to it. I think contributors and reviewers who wish to use LLMs for review are better served by running these tools locally, in compliance with the other policies. I propose removing the language around review bots.

- ℹ️ Review bots that post without being approved by a maintainer will be banned.
This is a one-time approval; maintainers don't need to approve individual reviews.
- ℹ️ Review bots **must** have a separate GitHub account that clearly marks them as an LLM.
You **must not** post (or allow a tool to post) LLM reviews verbatim on your personal account unless clearly quoted with your own personal interpretation of the bot's analysis.
- ℹ️ Review bot accounts must be blockable by individual users via the standard GitHub user-blocking mechanism. (Note that some GitHub "app" accounts post comments that look like users but cannot be blocked.)
- ℹ️ LLM comments **must not** be blocking; reviewers must indicate which comments they want addressed.
- In other words, reviewers must explicitly endorse an LLM comment before blocking a PR. They are responsible for their own analysis of the LLM's comment and cannot treat it as a CI failure.
- ℹ️ This does not apply to private use of an LLM for reviews; see ✅ above.
- 💡 See the [dev-guide][llm-guidance] for additional suggestions.

#### Experiment: LLM-created code changes
We leave space open to experiment with LLMs to inform future policies.
Pre-arranged, non-critical, high-quality, well-tested, and well-reviewed code changes that are originally created by an LLM are allowed, **with disclosure**.

1. "Pre-arranged" means that a reviewer has communicated *ahead of time* that they are willing to review an LLM-created PR.
- ℹ️ New contributors cannot use an LLM unless they first talk with a reviewer.
This must be the *same* reviewer who will be assigned to the PR.
2. "Non-critical" means that it is extremely unlikely for the PR to cause a [soundness](https://jacko.io/safety_and_soundness.html) regression.
- ℹ️ Examples:
- Changes to internal tooling like `tidy`, `x setup`, and `linkchecker` are probably ok.
- Changes that have a strong soundness impact, like the trait system, MIR building, or the query system are probably not ok.
3. "High-quality" means that it is held to at least the same standard as other code changes.
Everyone reads code, not just the author and reviewer;
we are not interested in "vibe-coded" PRs that degrade the quality of the codebase.
4. "Well-tested" means that you have covered all edge-cases that either you or the reviewer can think of.
- ℹ️ LLM-created PRs will be held to a higher standard than human-created PRs, because LLMs make it easier to write tests.
- ℹ️ If there is no existing test suite for a section of code, you must either write a new test suite or close the PR.
There are no exceptions for "writing the tests seems hard".
5. "Well-reviewed" means the author and reviewer both commit to fully understanding the code.
- ℹ️ All review requirements in [our existing review policy](../compiler/reviews.md#basic-reviewing-requirements) still apply.
- ℹ️ A review from a project member does not substitute for self-review.
Authors are expected to review their own code before posting and after each change.
- 💡 See the [dev-guide][llm-guidance] for additional suggestions.

LLM-created PRs must be tagged with a new `ai-assisted` label.
All such PRs will be posted to a new (private) Zulip channel, which will be accessible to all members of the `rust-lang` organization.
The goal of the channel is *not* to act as an additional gate-keeper on LLM-created PRs.
Instead, it's to collect information about *whether this experiment is working*:
Are people doing interesting and useful things with LLMs? Are they learning? Are they making repeat contributions?

Because the new channel is private, it will have higher-than-normal standards for what counts as on-topic.
For example, the following are on-topic:
- Whether a PR meets the criteria for the experiment exception
- Whether a PR follows the policy in general

And the following are off-topic:
- Technical and design discussions. These should be posted directly on the PR or in a public Zulip channel.
- Discussions about effort, communication style, or intent
- General discussions about the LLM policy
## Appendix
### Scope

This policy only applies to `rust-lang/rust`, and only to the teams that have ratified it: compiler, libs, types, rustdoc, bootstrap, and their subteams.
The following are not in scope and are free to set their own policies:
- Other repositories in `rust-lang`
- Submodules, subtrees, and crates.io dependencies
- Teams that have not ratified the policy, such as lang and edition

For example, the following do not fall under the policy:
- Tracking issues for T-lang
- T-lang proposals
- T-lang stabilization reports
- Language documentation
- The style guide
- Names of compiler lints. This only applies to the names themselves; the diagnostic messages are still covered under this policy.
- Direct quotes from any of the above in documentation or diagnostics.

### Motivation and guiding principles

There is not a consensus within the Rust project—and likely never will be—about when/how/where it is acceptable to use AI-based tools.
Many members of the Rust project and community find value in AI;
many others feel that its negative impact on society and the climate are severe enough that no use is acceptable.
Still others are working out their opinion.

Despite these differences, there are many values we all share:

- Building a community of deep experts in our collective projects.
- Building an inclusive community where all feel welcome and respected.

And many facts we agree on:

- Many people find LLM-generated code and writing deeply unpleasant to read or review.
- Many people find LLMs to be a significant aid to learning and discovery.
- LLMs are a new technology, and we are still learning how to use, moderate, and improve them.

With those facts and values in mind, the policy is designed with the following goals:

- Build an intentionally conservative policy that lets us maintain the standard of quality that Rust is known for.
- Limit LLM contributions to the very highest standard of quality, to show that our guideline of "better, not faster" isn't just words.
- Make the policy enforceable and easy to moderate.
- Make the policy consistent and easy to understand and summarize, even for people who haven't read it in detail.

### Moderation policy
#### It's not your job to play detective
["The optimal amount of fraud is not zero"](https://www.bitsaboutmoney.com/archive/optimal-amount-of-fraud/).
Don't try to be the police for whether someone has used an LLM.
If it's clear they've broken the rules, point them to this policy;
if it's borderline, [report it to the mods](https://rust-lang.org/policies/code-of-conduct/) and move on.
You are not required to "actively look" for whether an LLM was involved.

Reporting to moderation is not intended to be a penalty.
The mod team is interested in seeing non-violations as well as violations.
As always, the mod team is free to exercise their own judgement and discretion.

#### Be honest
Conversely, lying about whether you've used an LLM, or attempting to hide the extent of the use, is considered a [code of conduct](https://rust-lang.org/policies/code-of-conduct/) violation.
If you are not sure where something you would like to do falls in this policy, please talk to the [moderation team](mailto:rust-mods@rust-lang.org).
Don't try to hide it.

#### Penalties
The policies marked with a 🔨 follow the same guidelines as the code of conduct:
Violations will first result in a warning, and repeated violations may result in a ban.
- 🔨 Violations of the "Be honest" section
Comment on lines +207 to +215
Copy link
Copy Markdown
Contributor

@traviscross traviscross May 23, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One of the stated goals of this document is to:

Make the policy enforceable and easy to moderate.

But how do we plan to enforce the "be honest" section? How are we to judge whether someone's use of an LLM exceeded what was disclosed?

That seems an important detail. This document doesn't talk anywhere about standards of proof. Other CoC items are enforceable on visible behavior. This one is harder.

False accusations of LLM use are widespread. This policy makes each accusation into a moderation matter that must be litigated. An accused Project member can't just ignore a false accusation as an annoyance when we've decided to treat this as a bannable CoC violation. We will have raised the stakes.

Surely we don't expect the accused to prove a negative. And surely we don't intend to judge people as liars based on faulty stylistic heuristics. So what is the plan for how we adjudicate this fairly, consistently, and while lowering the burden on moderators?1

View changes since the review

Footnotes

  1. For anyone wondering why I needed to momentarily unlock the thread to post this review comment, I don't know either. But GitHub refused to let me post it while the thread was locked ("Failed to save comment: Issue is locked.").

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hrm. I'm thinking on this a bit.

This does seem like an important point. I'd worry about accusations that cannot be disproved leading to a moderation action.

What would be the mechanics of the accusation resolution?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@traviscross it's about trust.

You can assume good faith and cannot bullet-proof malice but we will do our best to tell one from the other. I think the word "experimentation" in this document is also about this and I wouldn't block on this concern.

This policy makes each accusation into a moderation matter that must be litigated

Not exactly. This document indicates guidelines for project members and for us (mods) as well as expectations from contributions. Mods are called to help - and I am quoting the document - in case of "major violations or extractive PRs" while reviewers are asked to be helpful in case of "minor violations". I wouldn't read too much into it.


At the RustWeek Niko said something about the Rust funding initiative that I think also applies here: maybe we won't get everything right immediately but we will have something out now and we will iterate as needed.

Copy link
Copy Markdown
Member Author

@jyn514 jyn514 May 24, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Note also that I have an entire "Don’t play detective" section dedicated to discussing this.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@apiraino: I'm trying to connect it, but I don't really follow how what you're saying engages with the concern I'm raising. The lines I'm commenting on above are the only part of the policy that is made coequal with other CoC items. If I accuse a Project member of harassment (a CoC item), I'd expect the mods would investigate to see whether that occurred. Similarly, if I accuse another member of lying about the extent of covered LLM use, given the policy treats this as a CoC item, I'd presume the mods would investigate to determine whether that happened.

My question isn't about trust, or good faith, or malice — those would seem to come after we determine the facts, and I'm unsure how we plan to determine facts here. My worry is that we may only have two bad options: guessing and unenforceability. I'm wondering whether (and hoping that) we have a better idea for this. We're talking about judgments that will have real effects on people. This isn't the kind of thing I'd want to leave to experimentation.

@jyn514: The "it's not your job to play detective" section mostly gives guidance to reporters (those who believe the policy has been broken). I'm asking how we expect the moderators (to whom the reports go) to adjudicate these reports. On that, the section says only, "the mod team is free to exercise their own judgment and discretion", but I don't see how this solves the epistemological problem. And asking the mod team to decide the undecidable seems in tension with the goal of making "the policy enforceable and easy to moderate."

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I agree that "innocent until proven guilty" is the only workable approach here. What other standard could realistically be applied?

Once failure to disclose LLM use becomes a CoC violation, the project implicitly needs a standard of proof. But allegations of undisclosed LLM use are often inherently hard to verify, so the burden of proof pretty much has to be, in other words: "beyond a reasonable doubt”.

And if a case really is obvious beyond reasonable doubt, it probably does not need to become a moderation matter in the first place, the contributor can simply be pointed at the policy and asked to correct the disclosure. The difficult cases are precisely the ones where certainty is not realistically achievable.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Honestly, this thread to me demonstrates just a general lack of awareness of how moderation works. This is further bolstered by a moderator explaining that this is not a concern, followed by a lack of understanding still.

Moderation is a neverending compromise of fairness and trying to balance accusations with reality. There are lots of things that have to be considered and "how can we possibly detect whether someone is lying" has the incredibly easy answer of, sometimes we can't, and we just move on.

The purpose of carving out honesty as required here is to let people know that it alone is not okay. Even if someone tries to get away with it for months, if all we find out after months is that they lied, that is a serious issue worth moderation. By how things are worded, we intentionally do not want to punish people who make mistakes, but want to clarify that people who have lied and have been caught will not be treated as someone who just made a few mistakes (no punishment) whereas someone who lied for months is treated severely.

The idea that every moderation claim is taken seriously is equally misleading. It's extremely possible for random strangers to accuse people of harassment with little evidence and moderation has to account for this differently than a team member accusing a team member of harassment. Evidence has to be weighed here and if someone is accused of lying without much merit, it has to be catalogued and ignored for now.

Simply looking at the rule of honesty and thinking "how could this possibly be enforced" is just a complete misunderstanding of how moderation is done.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

And also, a ban is not a one-way ticket. It is always followed by an invitation to discuss it with the moderators. So while false accusations can make people feel bad, it's not an irreversible decision and we have to balance it. Having no ability to ban at all will be way worse.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Outsider piping up to support clarfonthey as a voice of sanity here:

Anti-trolling rules are "unenforceable in theory," but moderation does the best it can, and it is absolutely better to have it than not. There's a mindblowing amount of defeatism lately at the prospect of defending communities against bad actors proxying for bots, but just like trolls they're bad actors that can be mitigated, albeit imperfectly, with a human-centric approach.

You talk to people. You make judgment calls, you escalate gradually, and sometimes you discover problems late or make mistakes and adjust. You default to kindness for those who need it. Repeat offenders do not. It's messy but it's a damn sight better than surrendering at the outset, and it makes your community a better place for the human beings living there.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

And also, a ban is not a one-way ticket. It is always followed by an invitation to discuss it with the moderators. So while false accusations can make people feel bad, it's not an irreversible decision and we have to balance it. Having no ability to ban at all will be way worse.

This is especially worth pointing out since the current anti-slop provisions rely on bans heavily for this reason. A ban prevents more contributions until a person speaks to moderators, which means actual spammers can't do anything more and genuine people can just have a quick chat to revert the decision. These are just extra tools to help mitigate harm.


Other violations are left up to the discretion of reviewers and moderators.
For minor violations we recommend telling the author that we can't review the PR until it complies with the policy, with pointers to exactly what they need to do.
For major violations or extractive PRs, we recommend closing the PR or issue.

It is **not** ok to harrass a contributor for using an LLM.
Copy link
Copy Markdown

@xtqqczze xtqqczze May 24, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
It is **not** ok to harrass a contributor for using an LLM.
It is a [code of conduct](https://rust-lang.org/policies/code-of-conduct/) violation to harass a contributor on the basis of suspected or perceived LLM use.

View changes since the review

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

On its face it might be worth just expanding this if the desire is to use the COC definition of harassment. It's not okay to harass people, but also, people are allowed to disagree on the right approach to things, and this is not harassment.

So, as-is, rather than change this sentence, it might be better to simply add:

Genuine harassment remains a COC violation. This way it still gets the intended point across (don't harass people) while only stating that genuine harassment is a serious COC violation. This way, it doesn't potentially belittle what people are experiencing (even if some people might interpret things wrong) while clarifying that many of these are genuine COC issues.

In this way, it's framed as: genuine harassment is a COC violation, and you should not try to tread that line, without accidentally implying that anything a contributor might perceive as harassment here is a COC issue. Since, at least when it comes to LLMs, a lot of people seem to interpret any friction as harassment, when that's not the case, and we want to carve out a way to have that nuance without trying to belittle people's experiences.

All contributors must be treated with respect.
The code-of-conduct applies to *all* conversations in the Rust project.

### Responsibility

Your contributions are your responsibility; you cannot place any blame on an LLM.
- ℹ️ This includes when asking people to address review comments originally created by an LLM. See "review bots" under ⚠️ above.

### The meaning of "originally created"
Copy link
Copy Markdown

@xtqqczze xtqqczze May 16, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
### The meaning of "originally created"
### The meaning of "originally generated"

I am still not comfortable with the use of "originally created" throughout this document, as it seems to imply that LLM output can itself be a creative work or meet a threshold of originality.

I think "originally generated" would be more precise and neutral terminology, and would avoid that implication.

View changes since the review


This document uses the phrase "originally created" to mean "text that was generated by an LLM (and then possibly edited by a human)".
No amount of editing can change how it was originally created; how it was generated sets the initial style and it's very hard to change once it's set.
Comment thread
jyn514 marked this conversation as resolved.

For more background about analogous reasoning, see ["What Colour are your bits?"](https://ansuz.sooke.bc.ca/entry/23)

This policy makes no distinction between LLM output that comes from a chat interface and output that comes from editor auto-completion.
In most cases the output is "trivial" (see above under ⚠️), but regardless, it is not treated specially by this policy.

### Conditions for modification or dissolution
This policy is not set in stone, and we can evolve it as we gain more experience working with LLMs.

Minor changes, such as typo fixes, only require a normal PR approval.
Major changes, such as adding a new rule or cancelling an existing rule, require:
- A simple majority of members of teams that have ratified the policy.
- No outstanding concerns from those members.
Comment thread
traviscross marked this conversation as resolved.

This policy can be dissolved in a few ways:

- An accepted FCP by the teams that ratified the policy.
- An objective concern raised about active harm the policy is having on the reputation of Rust, with evidence, as decided by a leadership council FCP.
Comment thread
jyn514 marked this conversation as resolved.

Changes to the guidance in the rustc-dev-guide have no special requirements for modification.
Loading