| # Labeling Guide |
|
|
| This document describes the labeling system used for issues and PRs in pinchtab. Use this guide when triaging tickets or asking agents to review open issues. |
|
|
| --- |
|
|
| ## Quick Reference |
|
|
| Every issue should have: |
| 1. **Exactly one Type label** (bug, enhancement, documentation, question, etc.) |
| 2. **One Status label** (ready, in-progress, blocked, fixed-unreleased, needs-investigation) |
| 3. **One Priority label** (high, medium, low) β optional for documentation or questions |
|
|
| --- |
|
|
| ## Tier 1: Issue Type (Mandatory) |
|
|
| Choose **exactly one**: |
|
|
| | Label | Color | Usage | |
| |-------|-------|-------| |
| | `bug` | π΄ Red | Something isn't working correctly | |
| | `enhancement` | π΅ Cyan | New feature or capability request | |
| | `documentation` | π΅ Blue | Improvements/additions to README, docs, or code comments | |
| | `question` | π£ Purple | Request for clarification or information | |
| | `good first issue` | π£ Purple | Good for newcomers (in addition to type label) | |
| | `help wanted` | π’ Green | Needs extra attention or expertise | |
| | `dependencies` | π΅ Blue | Dependency updates (PR label) | |
| | `invalid` | π‘ Yellow | Doesn't seem right; requires clarification | |
| | `duplicate` | βͺ Gray | Already exists (close and reference original) | |
| | `wontfix` | βͺ White | Deliberate decision not to fix | |
|
|
| ### Examples |
|
|
| - **Bug:** "fill action silently no-ops when using refs" β `bug` |
| - **Enhancement:** "Add CHROME_EXTENSION_PATHS support" β `enhancement` |
| - **Documentation:** "Update README with new CLI commands" β `documentation` |
| - **Question:** "How do I configure stealth mode?" β `question` |
|
|
| --- |
|
|
| ## Tier 2: Status (Recommended) |
|
|
| Choose **one** to show current state: |
|
|
| | Label | Color | Meaning | When to Use | |
| |-------|-------|---------|------------| |
| | `status: ready` | π΅ Blue | Ready to start work | Issue is fully understood, no blockers, waiting for someone to pick it up | |
| | `status: in-progress` | π‘ Yellow | Actively being worked on | Someone has claimed the issue and is working on a fix/feature | |
| | `status: blocked` | π΄ Red | Blocked by something | Waiting on external dependency, another issue, or decision | |
| | `status: fixed-unreleased` | π’ Green | Fix merged, not in release | PR is merged but feature/fix isn't in a released version yet | |
| | `status: needs-investigation` | π΄ Red | Needs debugging/research | Not enough info; requires investigation before work can start | |
|
|
| ### Workflow |
|
|
| ``` |
| New Issue |
| β |
| [Triage] Add Type + Status |
| β |
| status: needs-investigation (if unclear) or status: ready (if clear) |
| β |
| Developer picks it up |
| β |
| status: in-progress |
| β |
| PR submitted |
| β |
| PR merged |
| β |
| status: fixed-unreleased (for bugs) or remove status (for features) |
| β |
| Release cut |
| β |
| Remove status label (feature is released) |
| ``` |
|
|
| --- |
|
|
| ## Tier 3: Priority (Optional, for bugs/enhancements) |
|
|
| Choose **one** to indicate urgency: |
|
|
| | Label | Color | Level | When to Use | |
| |-------|-------|-------|------------| |
| | `priority: high` | π΄ Red | Critical; blocks users | Security vulnerability, critical bug, high-demand feature | |
| | `priority: medium` | π‘ Yellow | Normal; important for roadmap | Important bug or feature; should be done soon | |
| | `priority: low` | π’ Green | Nice to have; can defer | Minor improvement, polish, or edge case | |
|
|
| ### Examples |
|
|
| - **High:** "SafePath() fails to block path traversal" (security) β `bug` + `priority: high` |
| - **Medium:** "Snapshot doesn't work inside iframes" (affects users) β `bug` + `priority: medium` |
| - **Low:** "Consider migrating to PINCHTAB_* env vars" (nice refactor) β `enhancement` + `priority: low` |
| |
| --- |
| |
| ## Special Labels |
| |
| ### `good first issue` |
| Add this **in addition to the type label** for issues that are good entry points for new contributors. |
| |
| **Criteria:** |
| - Clear problem statement |
| - Solution is straightforward |
| - Doesn't require deep knowledge of codebase |
| - Estimated effort: <4 hours |
| |
| **Example:** "documentation: Add /find endpoint example to README" β `documentation` + `good first issue` |
| |
| ### `help wanted` |
| Indicates the issue needs expertise or has been stalled. |
| |
| **When to use:** |
| - Needs specific expertise (e.g., "needs Windows testing") |
| - Issue has been open >2 weeks without progress |
| - Complex problem that benefits from external input |
| |
| --- |
| |
| ## Decision Tree for Triage |
| |
| ``` |
| New issue arrives |
| β |
| 1. Is it a valid issue? |
| NO β `invalid` + close |
| YES β |
| 2. What is it? |
| β Bug? `bug` + assess severity β `priority: high|medium|low` |
| β New feature? `enhancement` + assess importance β `priority: high|medium|low` |
| β Docs missing? `documentation` + no priority needed |
| β Unclear? `question` + no priority needed |
| β |
| 3. Can we start work immediately? |
| YES β `status: ready` |
| NO β |
| 4. Why not? |
| β Need info β `status: needs-investigation` |
| β Waiting on something β `status: blocked` |
| β Already fixed β `status: fixed-unreleased` |
| ``` |
| |
| --- |
| |
| ## Guidelines for Agents |
| |
| When reviewing open issues, follow this checklist: |
| |
| - [ ] **Each issue has exactly one Type label** (bug, enhancement, documentation, question) |
| - [ ] **Bugs have Priority labels** (high, medium, low) |
| - [ ] **Enhancements have Priority labels** (high, medium, low) |
| - [ ] **Each issue has a Status label** (ready, in-progress, blocked, fixed-unreleased, needs-investigation) |
| - [ ] **No duplicate labels** (e.g., two type labels on one issue) |
| - [ ] **Status matches reality** (e.g., `status: in-progress` has an active PR) |
| - [ ] **Stale issues reviewed** (e.g., `status: blocked` for >2 weeks should note why) |
| |
| --- |
| |
| ## Current Label Inventory |
| |
| **Type labels (10):** |
| - bug, enhancement, documentation, question, good first issue, help wanted, dependencies, invalid, duplicate, wontfix |
| |
| **Status labels (5):** |
| - status: ready, status: in-progress, status: blocked, status: fixed-unreleased, status: needs-investigation |
| |
| **Priority labels (3):** |
| - priority: high, priority: medium, priority: low |
| |
| **Code labels (1):** |
| - javascript |
| |
| --- |
| |
| ## Examples of Well-Labeled Issues |
| |
| ### Example 1: Security Bug |
| ``` |
| Title: SafePath() fails to block path traversal on Windows |
| Labels: bug, priority: high, status: ready |
| ``` |
| **Why:** Critical security issue, ready to work on, high priority. |
| |
| ### Example 2: Feature Request (Ready) |
| ``` |
| Title: feat: Resource Pool with pluggable allocation strategies |
| Labels: enhancement, priority: medium, status: ready |
| ``` |
| **Why:** Enhancement, medium priority (important for roadmap), ready to start. |
| |
| ### Example 3: Feature (Blocked) |
| ``` |
| Title: feat: Semantic Element Selection via NLP (/find endpoint) |
| Labels: enhancement, priority: medium, status: blocked |
| ``` |
| **Why:** Enhancement, medium priority, but blocked (perhaps waiting on design decision). |
| |
| ### Example 4: Bug (Not Ready) |
| ``` |
| Title: click and humanClick fail to trigger Bootstrap dropdown |
| Labels: bug, priority: medium, status: needs-investigation |
| ``` |
| **Why:** Bug, medium priority, but needs investigation (reproduction steps unclear). |
| |
| ### Example 5: Already Fixed |
| ``` |
| Title: Installation issue |
| Labels: bug, priority: high, status: fixed-unreleased |
| ``` |
| **Why:** Critical bug, but fix is already merged and waiting for release. |
| |
| --- |
| |
| ## Common Mistakes |
| |
| β **Don't do this:** |
| |
| | Mistake | Why | Fix | |
| |---------|-----|-----| |
| | Two Type labels on one issue | Ambiguous; what is it really? | Choose one type only | |
| | Status label on closed issue | Status should reflect open work | Remove status label when closing | |
| | No Priority on bugs | Can't triage effectively | Add priority: high/medium/low to all bugs | |
| | `status: in-progress` with no PR | Misleading; is someone actually working on it? | Only use when work is actively underway | |
| | Forgetting Status labels | No visibility into progress | Always add a status label during triage | |
| |
| --- |
| |
| ## Related Documents |
| |
| - [DEFINITION_OF_DONE.md](./DEFINITION_OF_DONE.md) β Checklist for PRs before merge |
| - [CONTRIBUTING.md](../CONTRIBUTING.md) β Contribution guidelines (if present) |
| |
| --- |
| |
| ## Last Updated |
| |
| 2026-03-04 |
| |
| --- |
| |
| ## Summary |
| |
| **For agents:** Use this guide to understand and apply labels when triaging issues. Ensure every issue has Type + Status + Priority (if applicable). |
| |
| **For maintainers:** Review labels during triage and ensure consistency. Use the Decision Tree above as a quick reference. |
| |