# Pull Request Checklist **Use before opening pull requests.** ## Before Opening PR ### Code Quality - [ ] Code follows Grey Haven style guide (90 char TS, 130 char Python) - [ ] No commented-out code - [ ] No console.log or print statements (use structured logging) - [ ] No TODO comments (create Linear issues instead) - [ ] All imports organized and unused imports removed - [ ] Pre-commit hooks passing ### Testing - [ ] Unit tests added for new functions/components - [ ] Integration tests added for new features - [ ] E2E tests added for critical user flows - [ ] All tests passing locally with Doppler: `doppler run --config test -- bun test` - [ ] Test coverage >80% (verify with coverage report) - [ ] Tests use appropriate markers (@pytest.mark.unit, Vitest describe blocks) ### Multi-Tenant Compliance - [ ] All new tables include tenant_id column (NOT NULL, indexed) - [ ] All queries filter by tenant_id - [ ] RLS policies created for new tables - [ ] Tenant isolation tested with different tenant contexts - [ ] No cross-tenant data leakage possible ### Database Changes (if applicable) - [ ] Migration generated (Drizzle Kit or Alembic) - [ ] Migration tested up (apply) - [ ] Migration tested down (rollback) - [ ] Schema uses snake_case field names (NOT camelCase) - [ ] Indexes created for foreign keys and tenant_id - [ ] Migration reviewed by teammate ### Doppler Configuration - [ ] New environment variables added to Doppler - [ ] Environment variables documented in PR description - [ ] Environment variables added to all environments (dev/test/staging/production) - [ ] No secrets committed to git - [ ] .env.example updated (if applicable) ### Git & Linear - [ ] Branch follows naming convention: GREY-XXX-type-description - [ ] Commits follow conventional commits format - [ ] Linear issue ID in commits (Closes GREY-XXX / Fixes GREY-XXX) - [ ] Branch up to date with main: `git pull origin main` ## PR Content ### Title - [ ] PR title follows format: `(): [GREY-XXX]` - [ ] PR title matches issue title (or explains deviation) - [ ] PR title is under 100 characters ### Description - [ ] Summary section explains changes (2-4 sentences) - [ ] "Closes GREY-XXX" keyword included - [ ] Linear issue URL included - [ ] Motivation section explains "why" - [ ] Implementation details section covers key changes ### Implementation Details - [ ] Key changes documented by component - [ ] Database changes listed (if applicable) - [ ] Multi-tenant considerations documented - [ ] Doppler configuration changes documented - [ ] Breaking changes called out (if applicable) ### Testing Section - [ ] Automated test results documented - [ ] Test coverage percentage included - [ ] Manual testing steps included (if applicable) - [ ] Doppler test command included - [ ] Screenshots/recordings attached (if UI changes) ### Checklist - [ ] All PR description checklist items checked - [ ] Reviewers assigned - [ ] Labels synced from Linear issue ## After Opening PR ### CI/CD - [ ] GitHub Actions passing (tests, linting) - [ ] No merge conflicts with main - [ ] Branch protection checks passing - [ ] Deployment preview working (if applicable) ### Review Process - [ ] At least 1 reviewer assigned - [ ] Responded to review comments within 24 hours - [ ] All requested changes addressed - [ ] Re-requested review after changes - [ ] Approved by required reviewers ### Before Merging - [ ] All conversations resolved - [ ] CI/CD passing - [ ] Branch up to date with main - [ ] Squash merge selected (for clean history) - [ ] Linear issue will auto-close (verified "Closes GREY-XXX" in description) ## After Merging ### Post-Merge - [ ] Feature branch deleted - [ ] Linear issue automatically closed (verify) - [ ] Deployment to staging successful (if applicable) - [ ] Smoke tests passing in staging - [ ] Team notified of significant changes ### Deployment - [ ] Production deployment successful - [ ] Smoke tests passing in production - [ ] Monitoring shows no errors (Sentry, Axiom) - [ ] Performance metrics acceptable - [ ] Linear issue updated with deployment notes