engineering-handbook/confluence/04-issue-tracking.md

73 lines
2.5 KiB
Markdown
Raw Normal View History

# Issue Tracking
All work is tracked in Jira. Jira is the source of truth for work; GitHub is the source of truth for code. Link them rather than duplicating issues.
## Projects
| Key | Project | Use for |
|---|---|---|
| `DEV` | Software Development | Product features, application bugs, customer-facing work |
| `PLAT` | Infrastructure and Platform | AWS, networking, CI/CD, internal tooling |
| `SEC` | Security | Security findings, remediations, audits, access reviews |
Board columns are **To Do / In Progress / Blocked / Done**.
## Linking to GitHub
GitHub is connected to Jira. When the Jira key appears at the end of the PR title, for example `feat(parser): add receipt parser (DEV-123)`, the branch, commits, and PR show up on the Jira issue automatically.
## Ticket template
Every ticket description has these four sections. If a section has nothing in it, say so; do not delete it.
```markdown
## Context
## Scope
## Business rules
## Acceptance Criteria
```
### Context
Why the work exists. Name the affected systems specifically (repo, service, function name) and link related tickets and PRs.
| Good | Bad |
|---|---|
| The `payments-processor` Lambda times out on files over 10 MB. Found while working DEV-123. | The importer is slow sometimes. |
### Scope
What is in scope, and explicitly what is not. Link the ticket that owns anything out of scope.
| Good | Bad |
|---|---|
| In scope: raise the timeout and add a size guard. Out of scope: streaming parser rewrite (DEV-124). | Fix the importer. |
### Business rules
Constraints that must hold during and after the work: data that must not be lost, behavior that must not regress, limits that must not be exceeded.
| Good | Bad |
|---|---|
| In-flight uploads must not be dropped during the deploy. Existing records keep their IDs. | Don't break anything. |
### Acceptance Criteria
A checklist of items that can each be verified on its own. Prefer a command or observable result over a claim.
```markdown
## Acceptance Criteria
- [ ] A 25 MB upload completes without a timeout error in the logs
- [ ] Uploads over 50 MB return 413 with a descriptive message
- [ ] The README documents the new size limit
```
## Ticket hygiene
- **Close with evidence.** When closing, comment with what resolved it: the merged PR or the ticket that took over the remaining work.
- **Fix stale descriptions first.** Before starting an old ticket, check it against the current state and rewrite anything that no longer holds.
- **Keep epics honest.** Close an epic once its children are done, or add tickets for the work that remains.