Skip to content

Instantly share code, notes, and snippets.

@daneuchar
Last active January 22, 2026 06:07
Show Gist options
  • Select an option

  • Save daneuchar/1afe19f14422955247e7dc0ef95c454d to your computer and use it in GitHub Desktop.

Select an option

Save daneuchar/1afe19f14422955247e7dc0ef95c454d to your computer and use it in GitHub Desktop.
# ADR-001: Feature Development Workflow
| Status | Date | Author |
|--------|------|--------|
| Accepted | 2026-01-22 | Engineering Team |
## Context
As our team scales, we need a consistent, repeatable process for developing features that ensures code quality while maintaining development velocity. Without a standardized workflow, we risk inconsistent quality, integration issues, and unclear handoff points between team members.
## Decision
We will adopt a structured feature development workflow consisting of four phases: Planning, Development Loop, Iteration Control, and Deployment.
---
### Phase 1: Planning
Before any code is written, features must go through a planning phase to ensure alignment and manageable scope.
```mermaid
flowchart TD
Start((🎯 Feature Goal<br/>Story + Acceptance Criteria)) --> Decomp[πŸ“‹ Decompose into Sub-Tasks]
Decomp --> Prioritize[πŸ”’ Prioritize & Estimate]
Prioritize --> Branch[🌿 Create Feature Branch]
Branch --> Ready((βœ… Ready for<br/>Development))
style Start fill:#6366f1,stroke:#4338ca,color:#fff
style Decomp fill:#3b82f6,stroke:#2563eb,color:#fff
style Prioritize fill:#3b82f6,stroke:#2563eb,color:#fff
style Branch fill:#8b5cf6,stroke:#7c3aed,color:#fff
style Ready fill:#22c55e,stroke:#16a34a,color:#fff
```
**Key Activities:**
- Define clear acceptance criteria for the feature
- Break down work into reviewable sub-tasks
- Estimate effort and prioritize based on dependencies
- Create feature branch from latest develop
---
### Phase 2: Development & Testing Loop
Each sub-task follows an iterative cycle of implementation, testing, and review.
```mermaid
flowchart TD
subgraph DevLoop [πŸ”„ Development Cycle]
Coding[πŸ’» Implement Logic Chunk]
subgraph Testing [βœ… Quality Gates]
LocalTest[πŸ§ͺ Local Testing]
UnitTest[πŸ“Š Unit Tests]
AIReview[πŸ€– AI-Assisted Review]
end
Coding --> LocalTest
LocalTest --> UnitTest
UnitTest --> AIReview
end
AIReview --> Review[πŸ‘₯ Human Peer Review]
Review -- ❌ Changes Needed --> Coding
Review -- βœ… Approved --> Merge[πŸ“€ Commit & Push]
style Coding fill:#f59e0b,stroke:#d97706,color:#fff
style LocalTest fill:#14b8a6,stroke:#0d9488,color:#fff
style UnitTest fill:#14b8a6,stroke:#0d9488,color:#fff
style AIReview fill:#a855f7,stroke:#9333ea,color:#fff
style Review fill:#ec4899,stroke:#db2777,color:#fff
style Merge fill:#22c55e,stroke:#16a34a,color:#fff
```
**Quality Gates:**
- Local testing must pass before committing
- Unit test coverage required for new logic
- AI-assisted review for initial feedback
- Human peer review required for all merges
---
### Phase 3: Iteration & Completion Control
Work progresses through chunks and sub-tasks until the feature is complete.
```mermaid
flowchart TD
Merge[πŸ“€ Commit & Push] --> SubCheck{πŸ” Sub-Task<br/>Complete?}
SubCheck -- No, more chunks --> BackToCoding[πŸ’» Next Logic Chunk]
SubCheck -- Yes --> FeatureCheck{πŸ“¦ Feature<br/>Complete?}
FeatureCheck -- No, more sub-tasks --> BackToPlanning[πŸ“‹ Next Sub-Task]
FeatureCheck -- Yes --> ReadyForQA((βœ… Ready for<br/>Final QA))
style Merge fill:#22c55e,stroke:#16a34a,color:#fff
style SubCheck fill:#eab308,stroke:#ca8a04,color:#000
style FeatureCheck fill:#eab308,stroke:#ca8a04,color:#000
style BackToCoding fill:#f59e0b,stroke:#d97706,color:#fff
style BackToPlanning fill:#3b82f6,stroke:#2563eb,color:#fff
style ReadyForQA fill:#22c55e,stroke:#16a34a,color:#fff
```
**Iteration Rules:**
- Keep commits focused and atomic
- Sub-tasks should be completable within 1-2 days
- Re-evaluate priorities after each sub-task completion
---
### Phase 4: Final QA & Deployment
Completed features undergo final validation through the CI/CD pipeline before merging.
```mermaid
flowchart TD
Ready((βœ… Feature<br/>Complete)) --> CICD
subgraph CICD [⚑ CI/CD Pipeline]
direction TB
Build[πŸ”¨ Build] --> IntTest[πŸ”¬ Integration Testing]
IntTest --> AutoTest[πŸ€– Automation Testing]
AutoTest --> Deploy[πŸ“¦ Deploy to Staging]
end
CICD --> DocsUpdate[πŸ“„ Update Documentation]
DocsUpdate --> Ship((πŸš€ Merge to Develop))
style Ready fill:#6366f1,stroke:#4338ca,color:#fff
style Build fill:#06b6d4,stroke:#0891b2,color:#fff
style IntTest fill:#06b6d4,stroke:#0891b2,color:#fff
style AutoTest fill:#a855f7,stroke:#9333ea,color:#fff
style Deploy fill:#14b8a6,stroke:#0d9488,color:#fff
style DocsUpdate fill:#f97316,stroke:#ea580c,color:#fff
style Ship fill:#22c55e,stroke:#16a34a,color:#fff
```
**Deployment Checklist:**
- All CI/CD pipeline stages must pass
- Integration tests validate cross-component behavior
- Automation tests cover critical user journeys
- Documentation updated for any API or behavior changes
---
## Consequences
### Positive
- Consistent quality through defined checkpoints
- Smaller, reviewable increments reduce risk
- AI-assisted review catches issues early
- Clear handoff points between team members
### Negative
- Additional overhead for small changes
- Requires discipline to follow all steps
- AI review tooling requires maintenance
### Mitigations
- For hotfixes, allow expedited path with post-merge review
- Automate checklist enforcement where possible
- Regular retrospectives to refine the process
---
## References
- [Git Flow Branching Model](https://nvie.com/posts/a-successful-git-branching-model/)
- [Continuous Integration Best Practices](https://martinfowler.com/articles/continuousIntegration.html)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment