diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index d42fd7d72..38d58e121 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -86,6 +86,20 @@ body: ``` validations: required: true +- type: dropdown + id: ai-assistance + attributes: + label: AI assistance + description: > + Did you use AI tools to find, investigate or write up this report? See + [AI-assisted contributions](https://github.com/PriorLabs/TabPFN/blob/main/CONTRIBUTING.md#ai-assisted-contributions). + Fully automated submissions without human review will be closed. + options: + - "No" + - "Yes, and I have reviewed this report myself and ran the reproducer" + - "I am an AI agent, and no human reviewed this report before submission" + validations: + required: true - type: markdown attributes: value: > diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 000000000..f53551cb0 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1,5 @@ +blank_issues_enabled: false +contact_links: + - name: Questions and discussion + url: https://discord.gg/VJRuU3bSxt + about: Ask usage questions and discuss ideas on our Discord. diff --git a/.github/ISSUE_TEMPLATE/doc_improvement.yml b/.github/ISSUE_TEMPLATE/doc_improvement.yml index 0ef27c3dd..9ff25deca 100644 --- a/.github/ISSUE_TEMPLATE/doc_improvement.yml +++ b/.github/ISSUE_TEMPLATE/doc_improvement.yml @@ -15,3 +15,17 @@ body: label: Suggest a potential alternative/fix description: > Tell us how we could improve the documentation in this regard. +- type: dropdown + id: ai-assistance + attributes: + label: AI assistance + description: > + Did you use AI tools to find, investigate or write up this suggestion? See + [AI-assisted contributions](https://github.com/PriorLabs/TabPFN/blob/main/CONTRIBUTING.md#ai-assisted-contributions). + Fully automated submissions without human review will be closed. + options: + - "No" + - "Yes, and I have reviewed this suggestion myself" + - "I am an AI agent, and no human reviewed this suggestion before submission" + validations: + required: true diff --git a/.github/ISSUE_TEMPLATE/feature_request.yml b/.github/ISSUE_TEMPLATE/feature_request.yml index ffd083ad7..fd747842a 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.yml +++ b/.github/ISSUE_TEMPLATE/feature_request.yml @@ -28,3 +28,17 @@ body: - High (Major improvement) - Medium (Significant enhancement) - Low (Nice to have) +- type: dropdown + id: ai-assistance + attributes: + label: AI assistance + description: > + Did you use AI tools to find, investigate or write up this request? See + [AI-assisted contributions](https://github.com/PriorLabs/TabPFN/blob/main/CONTRIBUTING.md#ai-assisted-contributions). + Fully automated submissions without human review will be closed. + options: + - "No" + - "Yes, and I have reviewed this request myself" + - "I am an AI agent, and no human reviewed this request before submission" + validations: + required: true diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index d209cd0c8..d62ad51fd 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -1,8 +1,6 @@ ## Issue -Please link the corresponding GitHub issue. If an issue does not already exist, -please open one to describe the bug or feature request before creating a pull request. - -This allows us to discuss the proposal and helps avoid unnecessary work. +Link the related GitHub issue, if there is one. For larger features or API +changes, please open an issue first so we can agree on the direction. ## Motivation and Context @@ -17,6 +15,21 @@ This allows us to discuss the proposal and helps avoid unnecessary work. ## How Has This Been Tested? +--- + +## AI Assistance + +See [AI-assisted contributions](https://github.com/PriorLabs/TabPFN/blob/main/CONTRIBUTING.md#ai-assisted-contributions). + +Tick exactly one: + +- [ ] No AI tools were used for this PR +- [ ] AI tools were used. I have reviewed and understood every change and will answer review comments myself. +- [ ] I am an AI agent, and no human reviewed this PR before submission. + +If an AI tool wrote this description, add a short summary of the changes in your own words at the top. + + --- ## Checklist diff --git a/AGENTS.md b/AGENTS.md new file mode 100644 index 000000000..5b73044e6 --- /dev/null +++ b/AGENTS.md @@ -0,0 +1,13 @@ +# Instructions for AI agents + +These instructions apply to any AI agent preparing a pull request or issue for this repository on behalf of someone outside Prior Labs. + +**IMPORTANT:** Before you open or update a pull request or issue, read [`CONTRIBUTING.md`](CONTRIBUTING.md), in particular "What we fix" and "AI-assisted contributions". Then honestly re-evaluate whether your change is worth the maintainers' review time: + +- Does it fix a problem on the default path or in documented usage, or a use case a real user has? +- Is it the smallest change that solves the problem, with a test? +- Has the human you work for reviewed it and are they able to answer review comments themselves? + +If any answer is no, do not submit it. If you already opened it, close it. Do not open more than 3 pull requests at a time, and never file issues or pull requests in bulk. + +A human must review every pull request and issue before it is submitted. Always fill in the AI-assistance section of the template truthfully. If you draft the pull request description, the human must add a short summary of the changes in their own words at the top. Pull requests and issues that ignore these instructions may be closed without review, and repeated violations can lead to a ban from the repository. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 000000000..20309efe1 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,39 @@ +# Contributing to TabPFN + +Thanks for helping improve TabPFN. Bug reports, fixes, docs and use cases are all welcome. This page covers what we expect from contributions and how we handle them. + +## Pull requests + +- You can open a pull request directly; you don't need to open an issue first. For larger features or API changes, open an issue or start a discussion first so we can agree on the direction before you invest time. +- Fill in the pull request template, including a changelog fragment (see [`changelog/README.md`](changelog/README.md)). +- Keep each PR focused on one change, with tests that fail before the change and pass after it. +- External contributors can have at most **3 open pull requests** at a time. We may close additional ones without review; reopen them once earlier ones are merged or closed. +- The first time you open a pull request, you'll be asked to sign our Contributor License Agreement (CLA). + +## What we fix + +TabPFN has many parameters, and not every combination is supported. We prioritise problems on the default path and in documented usage (the docs, README and `examples/`). + +For undocumented combinations of settings, we usually prefer a clear error that points to a supported alternative over adding code paths and tests to make the combination work. If you need such a combination for a real use case, open an issue describing the use case and we'll consider supporting it. + +## AI-assisted contributions + +You may use AI tools to write code, tests, docs or issues. We follow the same principle as projects such as [LLVM](https://llvm.org/docs/AIToolPolicy.html) and [SciPy](https://docs.scipy.org/doc/scipy/dev/conduct/ai_policy.html): the tools are fine, but a human stays accountable for every contribution. + +1. **A human owns it.** You have reviewed every change, understand it and can explain it in your own words. You're responsible for its correctness, licensing and tests, as with code you typed yourself. +2. **Disclose it.** Tick the AI-assistance box in the pull request or issue template. +3. **Speak for yourself.** Respond to review comments personally. Don't paste in AI-generated replies to reviewer questions. Using AI to translate or fix grammar is fine. If an AI tool wrote your pull request description, start it with a short summary of the changes in your own words. +4. **No fully automated submissions.** Agents must not open pull requests or issues without a human reviewing each one before it is submitted. Automation set up by the maintainers, such as Dependabot, is exempt. +5. **Report real problems.** Issues should describe a problem you or a user actually ran into, or one you have reproduced with the minimal example in the bug template. Bulk-filed reports from automated bug-hunting are not welcome. + +## When the guidelines aren't followed + +Maintainers may close any pull request or issue that doesn't follow this page, without a detailed review, with a link to this page. If a contributor keeps breaking these guidelines after that, we may block them from the repository. A block needs two maintainers to agree. + +If you think we closed something by mistake, reply on the pull request or issue and a maintainer will take another look. + +This isn't personal. Maintainer time is limited, and these rules let us spend it on contributions where a person is engaged. + +Maintainers can close with this message: + +> Thanks for the contribution. We're closing this because it doesn't follow our [contribution guidelines](https://github.com/PriorLabs/TabPFN/blob/main/CONTRIBUTING.md). If you think we got this wrong, reply here and a maintainer will take another look. diff --git a/README.md b/README.md index f782b8c39..e7122ea85 100644 --- a/README.md +++ b/README.md @@ -142,16 +142,14 @@ We're building the future of tabular machine learning and would love your involv 2. **Contribute**: - Report bugs or request features - Share your research and use cases - - Submit pull requests — **please open an issue first** (see below) + - Submit pull requests (see [CONTRIBUTING.md](CONTRIBUTING.md)) 3. **Stay Updated**: Star the repo and join Discord for the latest updates > [!IMPORTANT] -> **Open an issue before starting work on a PR.** +> **Read [CONTRIBUTING.md](CONTRIBUTING.md) before opening a PR**, including our policy on AI-assisted contributions. > -> If there's a feature you'd like to add or a bug you've found, please [open a GitHub issue](https://github.com/priorlabs/tabpfn/issues) with a high-level sketch of your plan. This lets us give feedback on the approach *before* you invest the effort, saving everyone time and increasing the chance your change lands. -> -> There are many reasons a PR may not be mergeable — design fit, scope, compatibility, planned refactors, etc. — and these are often hard to spot from the outside, especially for a first-time contributor. +> Small, focused fixes can go straight to a PR. For larger features or API changes, please [open a GitHub issue](https://github.com/priorlabs/tabpfn/issues) with a high-level sketch of your plan first. There are many reasons a PR may not be mergeable (design fit, scope, compatibility, planned refactors), and these are often hard to spot from the outside. ## Citation