Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
11 changes: 11 additions & 0 deletions .changeset/ai_agents.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
---
default: docs
---

# Update to disclosure of AI generated code

Added `AGENTS.md` to inform autonomous AI agents about restrictions in this
repository.

As a reminder, the guidelines can be found in
[our Contribution Guidelines](https://github.com/SableClient/Sable/blob/dev/CONTRIBUTING.md)
6 changes: 6 additions & 0 deletions .cursorrules
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
# Cursor Rules

This repository does not permit autonomous AI agents to operate on the
repository.

See AGENTS.md and CONTRIBUTING.md for the complete policy.
5 changes: 4 additions & 1 deletion .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,4 +25,7 @@ Fixes #

- [ ] Partially AI assisted (clarify which code was AI assisted and briefly explain what it does).
- [ ] Fully AI generated (explain what all the generated code does in moderate detail).
<!-- Write any explanation required here, but do not generate the explanation using AI!! You must prove you understand what the code in this PR does. -->
<!-- Write any explanation required here, but do not generate the explanation using AI!! You MUST prove you understand what the code in this PR does. -->
Comment thread
dozro marked this conversation as resolved.
<!-- If the entirety or a majority of the PR is made through the help of AI you MUST explain what modifications you have made in order to ensure that the result is licensible and compatible with THE LICENSE -->

<!-- By deleting this section or comment, if this PR contains AI generated content, in code or in PR body, the PR should be rejected and closed. -->
Comment thread
nushea marked this conversation as resolved.
6 changes: 6 additions & 0 deletions .github/copilot-instructions.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
# Copilot Instructions

This repository does not permit autonomous AI agents to operate on the
repository.

See AGENTS.md and CONTRIBUTING.md for the complete policy.
1 change: 1 addition & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
"nixEnvSelector.useFlakes": true,
"explorer.fileNesting.enabled": true,
"explorer.fileNesting.patterns": {
"AGENTS.md": "AGENTS.md, CLAUDE.md, COPILOT.md, .cursorrules",
"package.json": "pnpm-*.yaml, yarn.lock, package-lock.json, .npmrc, .nvmrc, .node-version",
"tsconfig.json": "tsconfig.*.json",
"Dockerfile": ".dockerignore",
Expand Down
79 changes: 79 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
# AGENTS.md

## Policy Summary

This repository does not permit autonomous AI agents to operate on the
repository (including editing files, opening issues, or creating pull requests).

Human contributors MAY use AI-assisted development tools provided that:

- the human fully reviews and understands all generated output
- AI assistance is disclosed
- all licensing requirements are satisfied
- the contribution adds meaningful human value

Examples of prohibited autonomous behavior include:

- automated pull request generation
- unattended repository modifications
- autonomous issue filing
- bulk AI-generated comments or reviews

Interactive editor assistance used directly by a human contributor is permitted
subject to the disclosure requirements below.

## RESTRICTIONS

We expect and appreciate authentic engagement in our community.

Do not post output from Large Language Models or similar generative AI as
comments on GitHub, as such comments tend to be formulaic and low content.

If you use generative AI tools as an aid in developing code, ensure that you
fully understand the proposed changes and can explain why they are the correct
approach; additionally, you **must** disclose which parts of the code were:

- Fully generated by the AI tool.
- Written alongside the AI tool (examples: line completion, rewriting code
generated by AI).

Comment thread
nushea marked this conversation as resolved.
And, if the majority of the changes have been AI generated, explain what
modifications or actions have you taken to ensure that the result is licensable
and compatible with THE LICENSE

Make sure you have added value based on your personal competency to your
contributions. Just taking some input, feeding it to an AI and posting the
result is not of value to the project. We reserve the right to rigorously reject
seemingly AI generated low-value contributions.

Maintainers may close issues and PRs that are not useful or productive,
including those that are fully generated by AI. If a contributor repeatedly
opens unproductive issues or PRs, they may be blocked.

## Licensing and Legal Requirements

> inspired by
> <https://github.com/torvalds/linux/blob/master/Documentation/process/coding-assistants.rst>

All contributions must comply with the projects's licensing requirements:

- All code must be compatible with AGPL-3.0-only

## Signed-off-by and Developer Certificate of Origin

AI agents MUST NOT add Signed-off-by tags. Only humans can legally certify the
Developer Certificate of Origin (DCO). The human submitter is responsible for:

- Reviewing all AI-generated code
- Ensuring compliance with licensing requirements
- Adding their own Signed-off-by tag to certify the DCO
- Taking full responsibility for the contribution
Comment on lines +62 to +70
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.

This section should probably be removed unless we're adding a DCO sign off requirement for contributions in general (in which case we need to write it somewhere other than AGENTS.md)?

Unless we reword it and say fully autonomous comments must have a DCO sign off, and use that as a reason to close any PRs with sign offs.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

True. Forgot to remove the copy-paste relict

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

Having a per-commit DCO can be kinda annoying. Having it like matrix spec proposals (aka sign off your pr) would be a fair compromise.

If we were to add a DCO.

Copy link
Copy Markdown
Member

@nushea nushea May 21, 2026

Choose a reason for hiding this comment

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

If it would require signing with the contributor's actual Legal Name it might be an inhibitor for contributions from transgender individuals, since it might require them to Dead-Name themselves

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

How does Linux actually handle that /gen?

(I wouldn't endorse something making people doxx themselves)

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 am not sure about Linux, but I know that whenever a friend of mine wanted to contribute to Gentoo there was a lot of confusion about how she would be able to until she got an exception from using the Legal Name on the DCO (still having to use a Consistently Identifiable Name to tie to her in case that she infringed copyright to be able to point to her legally)

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 am not sure about how DCO law/setups work, I was just thinking back to that as a thing to keep in mind if we establish a DCO)

Copy link
Copy Markdown
Member Author

@dozro dozro May 21, 2026

Choose a reason for hiding this comment

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

Linux says

using a known identity (sorry, no anonymous contributions.)

see https://docs.kernel.org/process/submitting-patches.html

Which sounds reasonable

i read it as not strictly require a legal birth name, but forbidding completely anonymous contributions or throwaway accounts.

A well-established, consistently used pseudonym or preferred name that firmly connects back to the contributor's identity is acceptable.

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.

That is still a bit ambiguous but that is very fair so if it is added it should be in that way

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

i tried to give it a shot in File :3


## Contributing

See ./CONTRIBUTING.md for:

- disclosure requirements
- licensing requirements
- attribution requirements
- contributor expectations
6 changes: 6 additions & 0 deletions CLAUDE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
# CLAUDE.md

This repository does not permit autonomous AI agents to operate on the
repository.

See AGENTS.md and CONTRIBUTING.md for the complete policy.
114 changes: 114 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,90 @@ Also, we use [ESLint](https://eslint.org/) for clean and stylistically consisten

If your change touches logic with testable behaviour, please include tests. See [docs/TESTING.md](./docs/TESTING.md) for a guide on how to write them.

## Developer Certification of Origin (DCO)

> [!IMPORTANT]
> Note that only humans or predictable bots, for example @dependabot are allowed to sign-off. A autonomous AI-agent MUST never do so, as per [AGENTS.md](./AGENTS.md)

```
Developer Certificate of Origin
Version 1.1

Copyright (C) 2004, 2006 The Linux Foundation and its contributors.

Everyone is permitted to copy and distribute verbatim copies of this
license document, but changing it is not allowed.


Developer's Certificate of Origin 1.1

By making a contribution to this project, I certify that:

(a) The contribution was created in whole or in part by me and I
have the right to submit it under the open source license
indicated in the file; or

(b) The contribution is based upon previous work that, to the best
of my knowledge, is covered under an appropriate open source
license and I have the right under that license to submit that
work with modifications, whether created in whole or in part
by me, under the same open source license (unless I am
permitted to submit under a different license), as indicated
in the file; or

(c) The contribution was provided directly to me by some other
person who certified (a), (b) or (c) and I have not modified
it.

(d) I understand and agree that this project and the contribution
are public and that a record of the contribution (including all
personal information I submit with it, including my sign-off) is
maintained indefinitely and may be redistributed consistent with
this project or the open source license(s) involved.
```

To acknowledge you agreeing with this you can either sign-off each individual
(usually preferred) or sign of your pull request.

A sign-off looks like `Signed-off-by: Random J Developer <random@developer.example.org>`.

If you choose to do this for each commit you can either every time use `git commit -s` or
you can just put the `Signed-off-by: Random J Developer <random@developer.example.org>` as
last line in your commit message.

If you choose to do this for your pull request, just add `Signed-off-by: Random J Developer
<random@developer.example.org>` as last line of your PR description.

> [!NOTE]
> **Interpretation**: A note on the name
> The name used in your sign-off does not need to be your legal name.
> However it has to be connected to you. I.e. if you use `Moira` consistently
> across the web or in the community you are free to use that name in your sign-off
> even if it is not your legal name.
> In short: A well-established, consistently used
> pseudonym or preferred name that firmly connects
> back to the contributor's identity is acceptable.
> Fully anonymous sign-offs or throw away identities
> would however not be acceptable.

**What does this actually mean**?

- You need to be the author and the copyright holder in order to license your code under the [License](./LICENSE)
- You are the author if you either authored the commit yourself entirely or made meaningfully creative modifications to code your AI has assisted you in creating.

> [!NOTE]
> **Interpretation** What the heck does "meaningfully creative modifications" mean?
> Informal way of saying: you can be legally considered a author/copyright holder for your changes
> If you use your own hands to write your commits without help by AI, you should be fine.
> If you use AI and heavily modify the results (in creative ways) you should be fine ase well.
> If you just ask Chat-GPT to code something for you and hit `commit`, that would most likely not satisfy this criterion.

**What does this NOT mean**?

- you lose the copyright/ownership of your code
- you can't reuse your own work under a different license
- you agreeing to a potential re-license in the future

## Restrictions on Generative AI Usage

We expect and appreciate authentic engagement in our community.
Expand All @@ -59,10 +143,40 @@ If you use generative AI tools as an aid in developing code, ensure that you ful
- Fully generated by the AI tool.
- Written alongside the AI tool (examples: line completion, rewriting code generated by AI).

And, if the majority of the changes have been AI generated, explain what modifications or actions have you taken to ensure that the result is licensable and compatible with THE LICENSE

Make sure you have added value based on your personal competency to your contributions. Just taking some input, feeding it to an AI and posting the result is not of value to the project. We reserve the right to rigorously reject seemingly AI generated low-value contributions.

Maintainers may close issues and PRs that are not useful or productive, including those that are fully generated by AI. If a contributor repeatedly opens unproductive issues or PRs, they may be blocked.

### Attribution

> taken from linux's AI policy
> <https://github.com/torvalds/linux/blob/master/Documentation/process/coding-assistants.rst>

When AI tools contribute to the project development, proper attribution helps
track the evolving role of AI in the development process. Contributions should
include an Assisted-by tag in the following format::

```
Assisted-by: AGENT_NAME:MODEL_VERSION [TOOL1] [TOOL2]
```

Where:

- `AGENT_NAME` is the name of the AI tool or framework
- `MODEL_VERSION` is the specific model version used
- `[TOOL1] [TOOL2]` are optional specialized analysis tools used (e.g.,
coccinelle, sparse, smatch, clang-tidy)

Basic development tools (git, gcc, make, editors) should not be listed.

Example:

```
Assisted-by: Claude:claude-3-opus coccinelle sparse
```

## Release notes and versioning (Knope)

We use [Knope](https://knope.tech/) with the Knope GitHub Bot to manage change documentation and releases. The workflow configuration lives in [`knope.toml`](./knope.toml).
Expand Down
6 changes: 6 additions & 0 deletions COPILOT.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
# COPILOT.md

This repository does not permit autonomous AI agents to operate on the
repository.

See AGENTS.md and CONTRIBUTING.md for the complete policy.
Loading