Issue Lifecycle & Workflows¶
How issues move through states, how sprints work, and patterns for organizing work.
State machine¶
stateDiagram-v2
[*] --> Open
Open --> InProgress : Start work
Open --> Duplicate : Duplicate found
Open --> Proposal : Needs approval
InProgress --> Review : Ready for review
InProgress --> Open : Blocked / paused
Review --> Done : Approved
Review --> InProgress : Changes requested
Proposal --> Open : Approved
Proposal --> Done : Rejected
Done --> [*]
Duplicate --> [*]
Done --> Invoice : Billable work
Invoice --> [*]
InProgress : In Progress
State descriptions¶
| State | Meaning |
|---|---|
| Open | Ready to be picked up — backlog or sprint-planned |
| In Progress | Actively being worked on |
| Review | Work complete, awaiting review (code review, QA, or stakeholder sign-off) |
| Done | Accepted and closed |
| Duplicate | Closed as duplicate of another issue |
| Proposal | Idea or request that needs approval before becoming actionable |
| Invoice | Completed billable work pending invoicing |
Sprint workflow¶
All four projects share a unified sprint board. One sprint runs across SAR, IDQ, OPS, and LAB simultaneously.
Sprint naming convention: descriptive name reflecting the sprint goal (e.g. "Customer Shooting Guidelines").
Sprint cycle¶
- Planning — issues are estimated, prioritized, and assigned to the sprint
- Execution — developers pick up Open issues, move them through states
- Review — completed work is reviewed before the sprint closes
- Retrospective — unfinished issues carry over to the next sprint
Epic + subtask patterns¶
When to use Epics¶
- Work that spans 3+ issues or multiple sprints
- Features that need to be broken down for parallel work
- Cross-project initiatives (e.g. an Epic in SAR with subtasks in IDQ and OPS)
How to structure¶
- Create the Epic with a clear summary of the goal
- Add subtasks (User Stories or Tasks) as children
- Each subtask should be independently deliverable
- Close the Epic only when all subtasks are Done
Issue summary conventions¶
Write summaries in imperative mood with a specific scope:
| Good | Bad |
|---|---|
| Add retry logic to image upload endpoint | Image upload changes |
| Fix pagination offset in user listing API | Bug in API |
| Create IAM roles for staging environment | DevOps stuff |
Developer workflow¶
The typical cycle using CLI tools:
- Pick an issue — find an Open issue assigned to you in the current sprint
- Start task —
sq-dev:start-taskcreates a branch from the issue - Work — commit regularly with issue ID in commit messages
- Close task —
sq-dev:close-tasksquash-merges into dev, updates issue state to Done
See Skills for the full skill reference, or the YouTrack Guide for command bar syntax.