2. Estrategia de branches Git y Neon
ExpressMX trabaja en modelo trunk-based: una sola rama de larga vida (main)
que siempre debe estar desplegable, ramas cortas por feature, y branches
efímeros de Postgres (Neon) por cada Pull Request. Este documento cubre las
convenciones de nombre y los tres escenarios operativos: feature, hotfix y
rollback.
Última actualización: 2026-05-05
2.1 Convenciones de nombre
Git
| Prefijo | Patrón | Ejemplo | Vida |
|---|---|---|---|
feature/ |
feature/<modulo>-<descripcion-corta> |
feature/finanzas-corte-quincenal |
corta, una por PR |
fix/ |
fix/<modulo>-<descripcion> |
fix/auth-jwt-secret-validation |
corta, una por PR |
hotfix/ |
hotfix/<incidente> |
hotfix/login-401-loop |
mínima, prioridad alta |
revert/ |
revert/<commit-corto> |
revert/3f9a2b-rbac-roles |
corta, audit trail |
Reglas de oro:
- Una rama por PR; no se reusa una rama después del merge.
- El squash merge produce un único commit con título descriptivo en
main. - Nunca se mergea directo a
mainsin PR.
Neon Postgres
| Tipo | Patrón | Origen | Vida |
|---|---|---|---|
production |
nombre fijo | primary | permanente |
dev |
nombre fijo | child de production |
permanente, reset semanal |
preview/pr-<NUM> |
un branch por PR | child de production |
hasta 7 días |
restore/<motivo> |
branch ad-hoc | replay WAL | temporal, hasta confirmar |
2.2 Escenario A — Feature
- Developer crea
feature/<modulo>-<descripcion>desdemainactualizado. - Pre-commit hooks corren typecheck y lint sobre el diff.
- Al abrir el PR:
- GitHub Actions corre
quality,test,builden paralelo (vercicd-pipeline.md). - Vercel publica preview deployment. - Neon creapreview/pr-<NUM>y devuelveDATABASE_URLpara el preview. - Reviewer aprueba; checks verdes; merge squash a
main. - Vercel despliega production. Neon elimina el preview branch.
2.3 Escenario B — Hotfix
- Crear
hotfix/<incidente>desdemain(mismo flujo que feature, sin atajos). - Diff mínimo dirigido al bug; sin refactors oportunistas.
- PR con etiqueta
hotfix; review obligatoria de un segundo ingeniero. - Tras el merge se promueve el deploy de Vercel y, si aplica, se documenta el incidente en un postmortem corto.
2.4 Escenario C — Rollback
Dos vectores independientes:
Rollback de código
Vercel ofrece "Promote previous deployment" en el dashboard. Es el camino preferido cuando el bug está sólo en código y el schema es compatible con la versión anterior.
Rollback de schema
Si la migración rompió producción se usa el time-travel de Neon:
neonctl branches restore production \
--source 'production@1 hour ago'
El comando crea un branch nuevo con el estado anterior; se redirige
DATABASE_URL a ese branch hasta confirmar la corrección. Después se
crea un PR de revert documentado contra main para alinear el historial.
2.5 Disciplina de merges y migraciones
- Nunca se ejecuta
00.sqlcompleto en production (es plantilla para bases nuevas y restores). - Cada migración está numerada y es idempotente.
- El reviewer verifica que
pnpm testsiga pasando contra el branch con la migración aplicada y que el rollback documentado funcione.