Purpose
Standardize how a feature moves from ticket → code → review → merge → handoff, minimizing rework and lead time.
Scope
- Applies to all features & enhancements (bugs have their own SOP).
- Used by Developers, Tech Leads, PMs, and DevOps.
- QA runs as a separate track; this SOP ends at Dev→QA handoff.
Objectives
- Ensure tickets are well-specified before coding.
- Enforce clean branching, tests, and review.
- Create predictable, auditable delivery.
Step-by-Step Process
1) Intake & Grooming
- PM/Lead drafts ticket with business goal and acceptance criteria.
- Dev reviews feasibility; links to API/DB specs (EPIC 2 – Docs 4 & 5).
- Size the work (S/M/L) and add dependencies.
Definition of Ready (DoR)
| Item | Yes/No |
| Problem statement + scope clear | |
| Acceptance criteria (Gherkin or checklist) present | |
| Designs/API contracts linked | |
| Non-functional needs (perf, security) noted | |
| Test approach agreed (unit/integration) |
2) Plan & Design Trace
- Confirm design notes in ticket: edge cases, data model impacts.
- Create/update ADR if architecture choices are new (EPIC 2 – Doc 12).
3) Branching & Setup
- Branch from
develop(ormainif trunk-based).
Branch Naming
| Type | Pattern | Example |
| Feature | feature/<ticket-key>-<slug> | feature/WEB-142-user-export |
| Spike | spike/<ticket-key>-<slug> | spike/API-88-ratelimit |
| Hotfix* | hotfix/<ticket-key>-<slug> | hotfix/BUG-301-null-ref |
* Hotfix follows separate rollback SOP.
4) Build the Feature
- Write code with layered structure (controller → service → repo).
- Follow Service & Modularity Policy (EPIC 2 – Doc 7).
- Keep commits small, message format:
type(scope): summary #TICKET- Example:
feat(export): add csv writer #WEB-142
Minimum Engineering Done
| Check | Yes/No |
| New code has unit tests (≥70% for changed lines) | |
| Integration/contract tests for API surface | |
| Feature flags used for risky changes | |
| Migrations idempotent & reversible | |
| Docs/README updated if behavior changes |
5) Local & CI Verification
- Run lint, unit, and integration tests locally.
- Push branch → CI must pass build, tests, security scans.
6) Pull Request & Review
- Open PR to
develop(ormainfor trunk). - PR Template (paste in description):
## What & Why Summary + business context. ## Scope- What changed - Not changed / out of scope ## Links Ticket, design, API/DB docs, ADR. ## Testing- Unit: ... - Integration: ... - Manual steps: ... ## Risks & Rollback Feature flag? Migration rollback steps?
Review Rules
| Rule | Standard |
| Reviewers | ≥1 peer + Lead for risky changes |
| SLA | 24h for first response |
| Size | Target ≤ 400 lines diff; split if larger |
| Outcomes | Approve / Request changes / Block with reasoning |
7) Merge & Sync
- Squash or conventional merge per repo policy.
- Delete branch after merge.
- If monorepo: update affected workspaces and lockfiles.
8) Deploy to Staging
- CI/CD promotes build to staging automatically/manual-approve.
- Run smoke checks; confirm feature flag default.
9) Dev → QA Handoff (End of this SOP)
Attach this Handoff Note to the ticket and tag QA:
Dev→QA Handoff Template
| Field | Entry |
| Ticket | KEY-123 |
| Build/PR | commit SHA / PR link |
| Scope | What to test (incl. edge cases) |
| Config/Flags | Feature flag name & default |
| Data | Test user/env/migrations |
| Risks | Areas likely to regress |
| Rollback | Steps/flag/off switch |
(Full QA process lives in the separate QA SOP.)
Roles & Responsibilities
| Role | Responsibility |
| Developer | Delivers code + tests; completes PR & handoff |
| Tech Lead | Ensures readiness, reviews design & risky PRs |
| PM | Clarifies scope, accepts against AC |
| DevOps | Keeps CI/CD healthy; staging deploys |
| Documentation Owner | Updates system docs if behavior changes |
Governance
- DoR must be met before sprint commitment.
- No direct commits to protected branches.
- CI gates: lint, tests, security scan, build.
- Feature flags for risky/long-running features.
- Audit: PRs must link ticket & relevant docs.