|
10 | 10 | - [The Standard We Hold](#-the-standard-we-hold) |
11 | 11 | - [Local Setup](#-local-setup) |
12 | 12 | - [What to Contribute](#-what-to-contribute) |
| 13 | +- [Automated Issue Management & Claiming](#-automated-issue-management--claiming) |
13 | 14 | - [Branch & Commit Conventions](#-branch--commit-conventions) |
14 | 15 | - [Opening a Pull Request](#-opening-a-pull-request) |
15 | 16 | - [Code Style & Quality Gates](#-code-style--quality-gates) |
@@ -144,12 +145,56 @@ The accuracy engine lives in `utils/time.ts` and `lib/calculate.ts`. |
144 | 145 |
|
145 | 146 | **Rules for logic changes:** |
146 | 147 |
|
147 | | -- All changes must be backward-compatible (no breaking the default behavior) |
| 148 | +- All logic changes must be backward-compatible (no breaking the default behavior) |
148 | 149 | - Include a code comment explaining _why_ the logic works, not just _what_ it does |
149 | 150 | - If you add a new URL parameter, document it in `README.md`'s parameter table |
150 | 151 |
|
151 | 152 | --- |
152 | 153 |
|
| 154 | +## 🤖 Automated Issue Management & Claiming |
| 155 | + |
| 156 | +CommitPulse uses a custom, lightweight **GitHub Actions** automation system to manage issues fairly. This ensures that everyone (especially during events like **GSSoC**) gets a chance to contribute and prevents "issue hoarding". |
| 157 | + |
| 158 | +> [!IMPORTANT] |
| 159 | +> **The Golden Rule:** You can only be assigned to **ONE** open issue at a time. Finish it or unassign yourself before claiming another. |
| 160 | +
|
| 161 | +### 🎮 Available Commands |
| 162 | + |
| 163 | +Our automation runs entirely through issue comments. Here is how you interact with it: |
| 164 | + |
| 165 | +| Command | Who Can Use It? | What It Does | |
| 166 | +|---------|-----------------|--------------| |
| 167 | +| `/claim` | **Anyone** | Self-assigns the issue to you. | |
| 168 | +| `/addlabel <label1> <label2>` | **Anyone** | Adds labels to the issue (e.g. `/addlabel frontend bug`). | |
| 169 | +| `/unassign @username` | **Maintainers Only** | Removes the assignee from an issue. | |
| 170 | +| `/assign @username` | **Maintainers Only** | Manually assigns someone to an issue. | |
| 171 | + |
| 172 | +### ⏳ The Inactivity Policy (Assignment Expiry) |
| 173 | + |
| 174 | +To keep the project moving, assignments are not permanent. |
| 175 | +- **The 3-Day Rule:** If an issue has an assignee but sees **no activity for 3 days**, our automated background job will remove the assignment. |
| 176 | +- **What counts as activity?** Posting a comment, opening a linked PR, or a maintainer adding a label. |
| 177 | +- **Why?** It frees up stale issues so other active contributors can pick them up. If your issue expires, you can always `/claim` it again if it's still available! |
| 178 | + |
| 179 | +### 💡 GSSoC Contributor Flow |
| 180 | +1. Find an unassigned open issue you want to work on. |
| 181 | +2. Comment `/claim` to lock it in. |
| 182 | +3. Need labels? Comment `/addlabel good-first-issue` (labels must already exist in the repo). |
| 183 | +4. Work on your code and submit a PR within 3 days to avoid expiry. |
| 184 | +5. Once your PR is merged and the issue is closed, you can `/claim` your next one! |
| 185 | + |
| 186 | +### 🆘 Troubleshooting & Edge Cases |
| 187 | + |
| 188 | +If the bot rejects your command, check these common scenarios: |
| 189 | + |
| 190 | +- **"Commands cannot be used on closed issues"**: You cannot claim, assign, or unassign on closed issues. Find an open one! |
| 191 | +- **"You already have an active assigned issue"**: You must finish your current task. If you're stuck, ask a maintainer to `/unassign` you from the old one. |
| 192 | +- **"This issue is already assigned to @username"**: Be faster next time! Look for issues without assignees. |
| 193 | +- **"The following label(s) do not exist"**: You can only add existing repo labels. The bot will reply with a list of valid labels you can use. |
| 194 | +- **"You don't have permission"**: You tried to use `/assign` or `/unassign`. Please use `/claim` instead. |
| 195 | + |
| 196 | +--- |
| 197 | + |
153 | 198 | ## 🌿 Branch & Commit Conventions |
154 | 199 |
|
155 | 200 | ### Branch Naming |
|
0 commit comments