fleet/docs/Contributing/reference/issue-specification-checklist.md
2025-12-18 18:00:39 -06:00

194 lines
5.8 KiB
Markdown

# Engineering Spec Review Checklist
This document is a checklist for **reviewing design docs and translating them into well-specified engineering subtasks** in the Fleet repository.
The goal is to ensure issues are actionable, testable, and complete before implementation begins, reducing ambiguity and rework.
---
## Global Checklist (Applies to All Sub-Issues)
Before reviewing individual areas, confirm:
- [ ] **Problem & goal are clearly stated**
- What user or system behavior is changing?
- What does “done” look like?
- [ ] **Out of scope is explicitly defined**
- [ ] **Assumptions are listed**
- [ ] **Backward compatibility is considered**
- [ ] **Failure modes & edge cases are acknowledged**
- [ ] **Rollout and migration plan exists** (if applicable)
- [ ] **Acceptance criteria are concrete and testable**
- [ ] **Documentation impact is noted** (Fleet docs, API docs, changelog)
- [ ] **Security & permissions implications are reviewed**
- [ ] **Observability impact is noted** (logs, metrics, errors)
---
## Frontend Sub-Issue Checklist
### UX & Behavior
- [ ] Entry points in the UI are defined
- [ ] User roles & permissions are specified
- [ ] Happy path UX is described
- [ ] Error, loading, and empty states are defined
- [ ] Copy/text is provided or guidance is given
- [ ] Feature flag usage is specified (if applicable)
### Data & API Interaction
- [ ] Required API endpoints are listed
- [ ] Request and response shapes are documented
- [ ] Pagination, sorting, and filtering behavior is specified
- [ ] Caching or refetching strategy is noted
- [ ] Real-time updates or polling expectations are defined
### Design System & Consistency
- [ ] Existing components are identified or new ones are justified
- [ ] Consistency with Fleet UI patterns is verified
- [ ] Accessibility considerations are noted (ARIA, keyboard, contrast)
### Testing
- [ ] Unit test expectations are defined
- [ ] Integration / UI test expectations are defined
- [ ] Manual QA steps are outlined
---
## Backend Sub-Issue Checklist (Including REST APIs)
### API Design
- [ ] New vs existing endpoints are clearly identified
- [ ] HTTP methods and routes are specified
- [ ] Request schema is fully defined
- [ ] Response schema is fully defined
- [ ] Error responses and status codes are listed
- [ ] API versioning strategy is noted (if modifying existing APIs)
- [ ] Idempotency considerations are addressed (where applicable)
### Authorization & Security
- [ ] Required permissions and roles are explicitly stated
- [ ] Authentication context usage is defined
- [ ] Input validation rules are documented
- [ ] Potential abuse or misuse scenarios are considered
### Data Model & Storage
- [ ] Database schema changes are specified (tables, columns, indexes)
- [ ] Migrations are described (forward and rollback)
- [ ] Data lifecycle considerations are defined
- [ ] Performance impact is considered (queries, indexing)
### Business Logic
- [ ] State transitions are clearly described
- [ ] Edge cases and invalid states are defined
- [ ] Side effects are documented (events, async jobs, webhooks)
- [ ] Consistency guarantees are explained
### Testing & Docs
- [ ] Unit test expectations are defined
- [ ] Integration test expectations are defined
- [ ] API documentation updates are noted
- [ ] Backward compatibility tests are considered
---
## Agent Sub-Issue Checklist
### Behavior & Compatibility
- [ ] Agent behavior changes are clearly described
- [ ] OS/platform scope is specified (macOS, Windows, Linux, etc.)
- [ ] Minimum supported versions are noted
- [ ] Compatibility with older Fleet servers is considered
### Config & Communication
- [ ] New configuration options are documented
- [ ] Default behavior is specified
- [ ] Server ↔ agent contract changes are explicitly listed
- [ ] Failure and retry behavior is defined
### Performance & Reliability
- [ ] Performance impact is considered (CPU, memory, disk, network)
- [ ] Error handling and logging behavior is defined
- [ ] Offline or degraded-mode behavior is specified
### Rollout & Safety
- [ ] Feature flags or gradual rollout strategy is defined
- [ ] Upgrade and migration behavior is described
- [ ] Recovery strategy for failures is noted
### Testing
- [ ] Unit test expectations are defined
- [ ] Integration or end-to-end test expectations are defined
- [ ] Manual testing steps are included
---
## GitOps Sub-Issue Checklist
### Configuration & Schema
- [ ] YAML schema changes are fully specified
- [ ] Before/after examples are provided
- [ ] Validation rules are defined
- [ ] Default values are clarified
### Sync & Drift Behavior
- [ ] How changes are detected and applied is described
- [ ] Conflict resolution rules are specified
- [ ] Drift detection behavior is explained
### Errors & Safety
- [ ] Failure behavior is defined (partial apply, rollback, stop)
- [ ] Error messages are clear and actionable
- [ ] Safeguards against destructive changes are considered
### Compatibility & Migration
- [ ] Backward compatibility is addressed
- [ ] Migration path is documented
- [ ] Interaction with existing Fleet GitOps flows is reviewed
### Testing & Docs
- [ ] Unit or integration test expectations are defined
- [ ] Example repositories or fixtures are referenced
- [ ] Documentation updates are called out
---
## Reviewer Red Flags
Reviewers should push back if a spec includes:
- ❌ “Implementation details TBD”
- ❌ Missing API request/response shapes
- ❌ “Handle errors” without specifics
- ❌ No migration plan for data or configuration changes
- ❌ Implicit behavior changes not explicitly acknowledged
- ❌ No clear acceptance criteria
---
## Usage
This checklist should be used when:
- Reviewing design docs
- Creating or refining engineering subtasks
- Assessing readiness for implementation
Specs do not need to be verbose, but **they must be complete**.