b208517e0f
Aclara la politica: - Registry (functions/, types/, .claude/, docs/, dev/issues/): push directo a master. Cambios atomicos por naturaleza, no hay deployment. - Apps generadas (apps/, projects/*/apps/, services con tag service): TBD obligatorio — issue/<NNNN>-<slug> o quick/<slug>, merge --no-ff a master. Tabla en apps_tbd.md de cuando aplica TBD por tipo de cambio. Indice de reglas actualizado a 17 entradas.
2.2 KiB
2.2 KiB
Trunk-based development (TBD) en apps generadas con fn
El registry NO usa TBD (push directo a master OK). Pero toda app generada con fn que viva en apps/, projects/<name>/apps/ o que se despliegue a un VPS via deploy_server DEBE seguir TBD mientras se desarrolla:
master ← siempre deployable
↑
└── issue/<NNNN>-<slug> ← rama efimera (horas)
└── quick/<slug> ← cambios rapidos sin issue
commits atomicos (feat:, fix:, test:, docs:, refactor:, chore:)
merge --no-ff → master → push → delete branch
Reglas
- Nunca trabajar directo en master para una app. Crear
issue/<NNNN>-<slug>oquick/<slug>primero. - Commits atomicos por bloque logico (no WIP, no mezclar tipos).
- Tests obligatorios antes de mergear (los que aplique al stack: ctest/go test/pytest/...).
merge --no-ffpreserva la historia paralela.git log --first-parent masterda la vista limpia.- Feature flags (no WIP) cuando una feature no cabe en una sola rama. Archivo:
dev/feature_flags.json.
Por que el registry esta exento
El registry es un repo de funciones reutilizables, no un servicio en produccion. Los cambios son atomicos por su propia naturaleza (una funcion = uno o dos archivos). Imponer TBD a cada fn add añadiria fricion sin ganancia: la BD se regenera con fn index, no hay deployment, no hay usuarios consumiendo master en directo.
Cuando aplica TBD
| Cambio | TBD obligatorio |
|---|---|
Funcion nueva en cpp/functions/, python/functions/, etc. |
NO — push directo a master |
Tipo nuevo en types/ |
NO |
Doc/regla en .claude/, docs/ |
NO |
Issue del registry mismo (dev/issues/) |
NO — issue cerrado y push directo |
App nueva o modificacion de app en apps/ o projects/*/apps/ |
SI |
Service desplegable (tag: service) |
SI |
Analysis en analysis/ o projects/*/analysis/ |
NO — son exploraciones efimeras |
Comandos
/git-branch— crea rama desde master actualizado (para apps)./git-push— tests → merge--no-ff→ push → eliminar rama (para apps).
Para el registry, push directo a master con commits atomicos.