Issue Creation Workflow
Purpose: Guide anyone to create well-formed issues with proper templates and initial labels for efficient triage.
Audience: All team members, contributors, and users who report issues or request features.
Status: Draft
Rationale
For properly created issues we need to ensure that:
- Triage tooling can process issues correctly (requires templates)
- Essential information is captured upfront
- Triagers can quickly evaluate and categorize issues
- No premature labeling decisions are made (scope, priority, status are added later)
Well-formed issues reduce back-and-forth communication and speed up the path from report to resolution.
Quick Reference
Required for Every New Issue:
- ✅ Use a GitLab issue template
- ✅ Add
triage-neededlabel - ✅ Add
type::label if obvious (bug/enhancement/refactor)
Do NOT Add:
- ❌ Scope labels (added during triage)
- ❌ Priority labels (added by PM during sprint planning)
- ❌ Status labels (added during triage/refinement)
- ❌ Time estimation (added during triage or refinement)
- ❌ Assignees (set during sprint planning)
Workflow Steps
1. Determine When to Create an Issue
Who: Contributor
When: Before creating the issue
Actions:
- Bug discovered: When you encounter unexpected behavior or defects
- Feature/enhancement idea: When you want to specify a new feature or enhancement that was previously agreed upon
- Meeting discussion: When a new issue is mentioned in a meeting
- The person who raised the issue during the meeting should create it
- See Meeting Workflow for more details
- Refactoring needed: When code restructuring is required
- Question/clarification: When discussion is needed
Result: Understand when and why to create an issue
2. Determine Issue Type
Who: Issue creator (team member, contributor, user)
When: Before creating the issue
Actions:
- Bug: Something broken or not working as expected
- Enhancement: New feature or improvement to existing functionality
- Refactor: Code restructuring without changing functionality
- Question: Decision, Workflow, or other clarifications in documentation needed
Result: Know which template to use
2. Create Issue with Template
Who: Issue creator
When: When reporting a bug, requesting a feature, or asking a question
Actions:
- Go to GitLab Issues
- Search issues first, if an issue already exists
- Click "New issue"
- Select appropriate template (located in
.gitlab/issue_templates/): - Important: Do NOT skip template - triage tooling requires it
- Fill out all template sections completely
Result: Issue created with proper template structure
3. Add Required Labels
Who: Issue creator
When: During issue creation
Actions:
- Always add:
triage-neededlabel (required) - If obvious, add one of the labels scoped with type
- Do NOT add:
- Any
scope::labels (backend, frontend, etc.) - triager will add these - Any
priority::labels - PM adds during sprint planning - Any
status::labels - added during triage or refinement
- Any
Result: Issue has minimal required labels for triage
4. Provide Complete Information
Who: Issue creator
When: While filling out the template
Actions:
For Bug Reports, include:
- Version/branch where bug occurs (SHA-1 or branch name)
- Expected vs. actual behavior
- Steps to reproduce the issue
- Environment details:
- Operating system
- Rust version (for backend issues)
- Node.js/npm version (for frontend issues)
- Browser (for UI issues)
- Browser version (if relevant)
- Database version (if relevant)
For Feature Requests, include:
- Use case: what problem does this solve?
- Description of desired functionality
- Acceptance criteria (what defines "done")
Result: Issue contains all information needed for triage
5. Submit Issue
Who: Issue creator
When: After completing template and adding labels
Actions:
- Review issue for completeness
- Verify
triage-neededlabel is set - Click "Create issue"
- Issue automatically enters triage queue
Result: Issue is ready for triage process
Special Cases
Urgent/Critical Issues
If you discover a critical bug affecting production or blocking work:
- Still create the issue with template and
triage-neededlabel - Add
type::buglabel - Mention urgency in the issue description
- Notify PM team or triager directly (via GitLab/Nextcloud)
- Do NOT add priority labels yourself - PM will handle this
Duplicate Issues
If you discover your issue already exists:
- Add a comment on the existing issue with any new information
- Close your new issue
- Reference the original issue number when closing
Issues Spanning Multiple Components
If unsure which component (backend/frontend/etc.) is affected:
- Create the issue anyway with
triage-needed - Describe what you observe
- Let the triager determine the affected components
Examples
Example 1: Bug Report
Step 1: User discovers map editor crashes when adding certain plants
Step 2: User selects bug template, fills out:
- Title: "Map editor crashes when adding Tomato plant"
- Expected: Plant should be added to map
- Actual: Browser tab crashes
- Steps to reproduce: 1) Open map, 2) Click "Add plant", 3) Select "Tomato", 4) Click on map
- Environment: Chrome 120, macOS 14, main branch SHA abc123
Step 3: User adds labels: triage-needed, type::bug
Step 4: User submits issue
Result: Issue #1234 created and enters triage queue
Example 2: Feature Request
Step 1: Product manager wants dark mode for the application
Step 2: Team member selects enhancement template, fills out:
- Title: "Add dark mode toggle to application settings"
- Use case: Reduce eye strain for users working at night
- Audience: All users
- Description: Toggle switch in settings to enable dark theme
- Acceptance criteria: Dark theme applied to all pages when enabled
Step 3: Team member adds labels: triage-needed, type::enhancement
Step 4: Team member submits issue
Result: Issue #1235 created and enters triage queue
Example 3: Unclear Scope
Step 1: User notices slow performance when loading large maps
Step 2: User selects bug template (performance issue), fills out:
- Title: "Map loading takes 30+ seconds for large gardens"
- Expected: Map loads within 5 seconds
- Actual: Takes 30-45 seconds
- Steps: Open any map with 500+ plants
- Note: "Not sure if this is frontend rendering or backend query issue"
Step 3: User adds labels: triage-needed, type::bug
Step 4: User submits issue
Result: Issue created, triager will investigate and add appropriate scope labels
Related Resources
- Creating an Issue - Additional guidelines
- Reporting a Bug - Bug-specific requirements
- GitLab Issue Templates:
.gitlab/issue_templates/ - Triage Workflow triage.md - What happens after issue creation
- Issue Refinement Workflow issue_refinement.md - What happens if issue needs more detail
Troubleshooting
Common Issues
Problem: Not sure which template to use
Solution: When in doubt, use question.md template, add triage-needed label and comment on created issue that you were not sure which template to use - triager will correct the type
Problem: Don't know what labels to add
Solution: At minimum, just add triage-needed - triager will add all other necessary labels
Problem: Issue is complex and affects multiple areas
Solution: Create the issue anyway with triage-needed and describe what you observe - triager will determine appropriate labels and may split into multiple issues if needed
Problem: Not sure if this is a bug or expected behavior
Solution: Create issue with triage-needed and describe the behavior - triager or PM can determine if it's a bug or wanted behavior
Open Points
- doc/contrib/README.md probably needs refactoring as it has multiple workflows inside
- The links in Related Resources need to be activated in follow up as all workflows need to be merged first