|
| 1 | +# Contributing to DataProvider |
| 2 | + |
| 3 | +Thanks for your interest in contributing. Please read this guide carefully before submitting a PR. |
| 4 | + |
| 5 | +## What We Accept |
| 6 | + |
| 7 | +### Always Welcome (No Issue Required) |
| 8 | +- **Bug fixes** with tests that reproduce the issue |
| 9 | +- **New tests** that cover untested code paths (must not duplicate existing tests) |
| 10 | +- **Typo fixes** and factual corrections in documentation |
| 11 | +- **Build/CI fixes** that solve real problems |
| 12 | + |
| 13 | +### Requires Discussion First |
| 14 | +- **New features** - Open a Discussion first, then create an Issue if approved |
| 15 | +- **Refactoring** - Must have a clear rationale and maintainer approval |
| 16 | +- **Architecture changes** - Require an Issue with detailed proposal |
| 17 | +- **Documentation additions** - Beyond typo fixes, discuss first |
| 18 | + |
| 19 | +## Before You Submit |
| 20 | + |
| 21 | +1. **Check existing Issues and Discussions** - Your idea may already be tracked |
| 22 | +2. **Run the tests** - `dotnet test` must pass |
| 23 | +3. **Format your code** - `dotnet csharpier .` from the root folder |
| 24 | +4. **Keep changes minimal** - Only change what's necessary for your fix/feature |
| 25 | + |
| 26 | +## PR Requirements |
| 27 | + |
| 28 | +- PRs must solve a specific, identifiable problem |
| 29 | +- Include tests for bug fixes |
| 30 | +- Don't introduce unrelated changes |
| 31 | +- Don't add features without prior approval via Issue |
| 32 | + |
| 33 | +## What Will Be Rejected |
| 34 | + |
| 35 | +- PRs with no clear purpose or rationale |
| 36 | +- Bulk formatting/style changes |
| 37 | +- "Improvements" nobody asked for |
| 38 | +- Features without an approved Issue |
| 39 | +- Duplicate tests or tests that don't add coverage |
| 40 | +- AI-generated spam PRs with generic changes |
| 41 | + |
| 42 | +## Code Standards |
| 43 | + |
| 44 | +See [CLAUDE.md](CLAUDE.md) for coding conventions. Key points: |
| 45 | +- No exceptions - use `Result<T,E>` |
| 46 | +- No classes - use records with static methods |
| 47 | +- No interfaces - use `Func<T>`/`Action<T>` |
| 48 | +- All tests must be integration tests (no mocks) |
| 49 | +- Files under 450 LOC, functions under 20 LOC |
| 50 | + |
| 51 | +## Process |
| 52 | + |
| 53 | +1. **Bug fix**: Fork, fix, test, PR |
| 54 | +2. **Feature**: Discussion -> Issue -> Fork -> Implement -> PR |
| 55 | + |
| 56 | +Questions? Open a Discussion. |
0 commit comments