WitNote / .github /LABELING_GUIDE.md
AUXteam's picture
Upload folder using huggingface_hub
6a7089a verified
# 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.