From fe55f0a1248e06cc39ce2414bb68482723b085dd Mon Sep 17 00:00:00 2001 From: Rye Date: Wed, 20 May 2026 16:37:16 +0200 Subject: [PATCH 01/10] add AI agent policy documentation across multiple files --- .cursorrules | 6 +++ .github/copilot-instructions.md | 6 +++ .vscode/settings.json | 6 ++- AGENTS.md | 75 +++++++++++++++++++++++++++++++++ CLAUDE.md | 6 +++ CONTRIBUTING.md | 28 ++++++++++++ COPILOT.md | 6 +++ 7 files changed, 132 insertions(+), 1 deletion(-) create mode 100644 .cursorrules create mode 100644 .github/copilot-instructions.md create mode 100644 AGENTS.md create mode 100644 CLAUDE.md create mode 100644 COPILOT.md diff --git a/.cursorrules b/.cursorrules new file mode 100644 index 000000000..86958dae0 --- /dev/null +++ b/.cursorrules @@ -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. \ No newline at end of file diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md new file mode 100644 index 000000000..78dc79dc8 --- /dev/null +++ b/.github/copilot-instructions.md @@ -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. diff --git a/.vscode/settings.json b/.vscode/settings.json index 60018f71d..8a3fdcb40 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -14,5 +14,9 @@ "editor.defaultFormatter": "oxc.oxc-vscode" }, "nixEnvSelector.nixFile": "${workspaceFolder}/flake.nix", - "nixEnvSelector.useFlakes": true + "nixEnvSelector.useFlakes": true, + "explorer.fileNesting.enabled": true, + "explorer.fileNesting.patterns": { + "AGENTS.md": "AGENTS.md, CLAUDE.md, COPILOT.md, .cursorrules" + } } diff --git a/AGENTS.md b/AGENTS.md new file mode 100644 index 000000000..dffefd003 --- /dev/null +++ b/AGENTS.md @@ -0,0 +1,75 @@ +# 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). + +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 +> + +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 + +## Contributing + +See ./CONTRIBUTING.md for: + +- disclosure requirements +- licensing requirements +- attribution requirements +- contributor expectations diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 000000000..b67d0aef5 --- /dev/null +++ b/CLAUDE.md @@ -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. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index c037e31df..0481c6eeb 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -63,6 +63,34 @@ Make sure you have added value based on your personal competency to your contrib 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 +> + +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). diff --git a/COPILOT.md b/COPILOT.md new file mode 100644 index 000000000..617e388cc --- /dev/null +++ b/COPILOT.md @@ -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. From 18d67bbba82fe4a79114e3058bba2436b0aef8b9 Mon Sep 17 00:00:00 2001 From: Rye Date: Wed, 20 May 2026 16:51:29 +0200 Subject: [PATCH 02/10] add changelog entry :3 --- .changeset/ai_agents.md | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 .changeset/ai_agents.md diff --git a/.changeset/ai_agents.md b/.changeset/ai_agents.md new file mode 100644 index 000000000..e6a248976 --- /dev/null +++ b/.changeset/ai_agents.md @@ -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) From 9bd48a1039d363942c21f2502851b274598ae53d Mon Sep 17 00:00:00 2001 From: Shea Duma Date: Thu, 21 May 2026 15:36:00 +0300 Subject: [PATCH 03/10] Add requirement of proving a PR's adherence to the license --- .github/PULL_REQUEST_TEMPLATE.md | 5 ++++- AGENTS.md | 4 ++++ CONTRIBUTING.md | 2 ++ 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 8d22671f0..fe892a6d3 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -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). - + + + + diff --git a/AGENTS.md b/AGENTS.md index dffefd003..9f986aa2f 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -37,6 +37,10 @@ approach; additionally, you **must** disclose which parts of the code were: - 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 diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 0481c6eeb..fcefe0f22 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -59,6 +59,8 @@ 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. From 56bcdeae0e51c833cee10a8d9d542df97cf7c777 Mon Sep 17 00:00:00 2001 From: Rye Date: Thu, 21 May 2026 23:13:45 +0200 Subject: [PATCH 04/10] docs: add Developer Certification of Origin section to CONTRIBUTING.md --- CONTRIBUTING.md | 82 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 82 insertions(+) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 0481c6eeb..05a9415c8 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -48,6 +48,88 @@ 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 `. + +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 ` 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 +` 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 and 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. From d6da2824ad94d6e36ddf221d6b16b213a9924591 Mon Sep 17 00:00:00 2001 From: Rye Date: Thu, 21 May 2026 23:15:48 +0200 Subject: [PATCH 05/10] docs: improve formatting and clarity of interpretation notes in CONTRIBUTING.md Signed-off-by: Rye --- CONTRIBUTING.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 82734e224..c3bab1078 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -102,7 +102,8 @@ last line in your commit message. If you choose to do this for your pull request, just add `Signed-off-by: Random J Developer ` as last line of your PR description. -> [!NOTE] **Interpretation**: A note on the name +> [!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 and in the community > you are free to use that name in your sign-off @@ -118,7 +119,8 @@ If you choose to do this for your pull request, just add `Signed-off-by: Random - 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? +> [!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. From d20ad814708ee472f7ae6d07941f318ce8ea95a1 Mon Sep 17 00:00:00 2001 From: Rose Date: Thu, 21 May 2026 23:18:15 +0200 Subject: [PATCH 06/10] formatting :3 Signed-off-by: Rye --- CONTRIBUTING.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index c3bab1078..3215fbfbd 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -103,11 +103,11 @@ If you choose to do this for your pull request, just add `Signed-off-by: Random ` 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 and in the community -> you are free to use that name in your sign-off -> even if it is not your legal name. +> **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. @@ -120,11 +120,11 @@ If you choose to do this for your pull request, just add `Signed-off-by: Random - 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. +> **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**? From 9d31a4754826dc3bba7da0f4eeed20cf1409d317 Mon Sep 17 00:00:00 2001 From: Rye Date: Thu, 21 May 2026 23:24:19 +0200 Subject: [PATCH 07/10] formatting :/ --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 3215fbfbd..9db8a1872 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -124,7 +124,7 @@ If you choose to do this for your pull request, just add `Signed-off-by: Random > 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. +> 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**? From 7d14f9f529b258e35a76b13ceaceb75a94622cbc Mon Sep 17 00:00:00 2001 From: Rose Date: Fri, 22 May 2026 09:18:33 +0200 Subject: [PATCH 08/10] Update AGENTS.md to clarify AI usage guidelines Clarified the distinction between generative AI and deterministic coding tools in the document. --- AGENTS.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/AGENTS.md b/AGENTS.md index 9f986aa2f..46cbe9838 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -22,6 +22,13 @@ Examples of prohibited autonomous behavior include: Interactive editor assistance used directly by a human contributor is permitted subject to the disclosure requirements below. +> [!NOTE] +> *note, none authoritative*: the requirements outlined in this document apply to generative ai +> ("autonomous ai agent") and does not apply to **predictable/deterministic** coding tools, bots, scripts, +> and linter. For example: usage of SonarQube and usage of its recommondations are permitted +> and not subject to these restrictions. in fact: usage of SonarQube and similiar tools for coding +> quality are encouraged :3 + ## RESTRICTIONS We expect and appreciate authentic engagement in our community. From a32de1de42a1564ec2e426ac2e53a9ccab23ba3f Mon Sep 17 00:00:00 2001 From: Rose Date: Fri, 22 May 2026 09:27:59 +0200 Subject: [PATCH 09/10] Clarify contribution and sign-off guidelines --- CONTRIBUTING.md | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 9db8a1872..00a04a4b9 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -18,9 +18,11 @@ Bug reports and feature suggestions must use descriptive and concise titles and ## Pull requests -> ### Legal Notice +> [!CAUTION] > -> When contributing to this project, you must agree that you have authored 100% of the content, that you have the necessary rights to the content and that the content you contribute may be provided under the project license. +> When contributing to this project, you must agree that you have authored 100% of the content, that you have the +> necessary rights to the content and that the content you contribute may be provided under the project license. +> See the [section about DCO below](#developer-certification-of-origin-dco) for details. **NOTE: If you want to add new features, please discuss with maintainers before coding or opening a pull request.** This is to ensure that we are on same track and following our roadmap. @@ -51,6 +53,7 @@ If your change touches logic with testable behaviour, please include tests. See ## Developer Certification of Origin (DCO) > [!IMPORTANT] +> **Interpretation, non authoritative**: **coding assistant and bots signing off** > 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) ``` @@ -103,7 +106,7 @@ If you choose to do this for your pull request, just add `Signed-off-by: Random ` as last line of your PR description. > [!NOTE] -> **Interpretation**: A note on the name +> **Interpretation, non authoritative**: **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 @@ -120,7 +123,7 @@ If you choose to do this for your pull request, just add `Signed-off-by: Random - 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? +> **Interpretation, non authoritative** **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. From ae03e3dd8519546c182ea346066f84bcba08db0f Mon Sep 17 00:00:00 2001 From: Rose Date: Fri, 22 May 2026 09:43:31 +0200 Subject: [PATCH 10/10] Update CONTRIBUTING.md with identity sign-off guidance Clarify requirements for contributor identity and sign-off. --- CONTRIBUTING.md | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 00a04a4b9..88c02fa9f 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -116,6 +116,17 @@ If you choose to do this for your pull request, just add `Signed-off-by: Random > back to the contributor's identity is acceptable. > Fully anonymous sign-offs or throw away identities > would however not be acceptable. +> +> Importantly this requirement does NOT mean that you have to use your deadname, if +> you wish to contribute and your legal name doesn't match what you identify with. 🏳️‍⚧️🫶 + +> [!TIP] +> **Interpretation, non authoritative**: **What if i don't have a consistent name**? +> In cases where you don't have a consistent, well-known name, for various reasons, you +> may consider your GitHub username as your well-known name. +> So for example, if your GitHub handle is @octocat you may sign off as +> `Signed-off-by: octocat ` + **What does this actually mean**? @@ -123,7 +134,7 @@ If you choose to do this for your pull request, just add `Signed-off-by: Random - 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, non authoritative** **What the heck does "meaningfully creative modifications" mean**? +> **Interpretation, non authoritative**: **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.