diff --git a/AGENTS.md b/AGENTS.md index 6378b2a9c534..c54fdcb2b275 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -161,6 +161,34 @@ The `api/` module has the strongest stability guarantees — breaking changes ar - Commit messages describe the *what* and *why*, not implementation details. - Apache License header required on all new files (enforced by spotless pre-commit hook). +## AI-Generated PR Disclosure + +Pull requests that are authored or substantially generated by AI agents **must** be labeled as "AI-Generated". When creating a PR description, always include an AI Disclosure block at the bottom. Use the template below and fill in the fields you know. For fields you cannot determine, use `[unknown - human to fill in]`. + +See the [ASF generative tooling guidelines](https://www.apache.org/legal/generative-tooling.html) for additional policy on AI-generated contributions. Note that AI-generated code cannot carry copyright, so the Apache License header does not apply to purely generated files. + +AI-generated review comments **must** be reviewed for accuracy before posting. Auto-posting unreviewed AI comments is discouraged. + +### Required Fields + +- **Model**: Set this to your model identifier and version (e.g., `Claude Opus 4.6`, `GPT-4o`, `Gemini 2.5 Pro`). +- **Platform/Tool**: Set this to the tool or platform that orchestrated the generation (e.g., `GitHub Copilot`, `Cursor`, `Aider`, `Claude Code`, `custom script`). +- **Human Oversight**: Set this to `fully reviewed`, `partially reviewed`, or `unreviewed`. If unknown, use `[unknown - human to fill in]`. +- **Prompt Summary**: A brief description of the prompt or task given to the agent. + +### PR Description Template + +Add the following block at the bottom of PR descriptions: + +``` +--- +**AI Disclosure** +- Model: [model name and version] +- Platform/Tool: [tool or platform name] +- Human Oversight: [fully reviewed | partially reviewed | unreviewed] +- Prompt Summary: [brief description of the task] +``` + ## Boundaries - **Never** modify `.asf.yaml`, `LICENSE`, `NOTICE`, or `versions.props` without explicit discussion.