Branching
Three long-lived branches, forward-only merges, the drift guard that exists because of a real incident, and why CI's lint and test gates are muted.
Both repositories use the same model: dev → staging → main, always merged forward, never cherry-picked backward.
Rules
- Work branches off
dev. Pull requests targetdev. - Branch names are
tal-<id>-slug, lowercase — this auto-links to Linear. The old@feat/…convention is retired. - Commits are conventional:
feat:/fix:/chore:/docs:/test:. - Whoever lands a hotfix on
mainmerges it forward tostaginganddevthe same day.
The drift guard
branch-drift.yml runs on a weekday schedule and fails if main is ahead of staging, or if staging is ahead of dev.
CI
Both repos run .github/workflows/ci.yml on pull requests and on pushes to dev, staging, and main.
| Check | Blocking | Notes |
|---|---|---|
npm run build |
yes | the only gate |
| lint | no | continue-on-error |
| tests (backend) | no | continue-on-error |
The report-only checks are not aspirational — they are suppressed because of a real backlog: roughly 99 pre-existing ESLint errors in the backend and roughly 64 in the frontend, counted 2026-08-13, plus 6 auto-generated should be defined Nest CLI stub specs that fail on DI resolution (TAL-94).
Clear those backlogs, then drop continue-on-error. Turning the gates on first makes every PR red. TAL-94 covers the six stub specs; the two ESLint backlogs have no ticket and no owner.
