workspace-v1/orchestration/directivas/simco/SIMCO-GIT.md
rckrdmrd 66161b1566 feat: Workspace-v1 complete migration with NEXUS v3.4
Sistema NEXUS v3.4 migrado con:

Estructura principal:
- core/orchestration: Sistema SIMCO + CAPVED (27 directivas, 28 perfiles)
- core/catalog: Catalogo de funcionalidades reutilizables
- shared/knowledge-base: Base de conocimiento compartida
- devtools/scripts: Herramientas de desarrollo
- control-plane/registries: Control de servicios y CI/CD
- orchestration/: Configuracion de orquestacion de agentes

Proyectos incluidos (11):
- gamilit (submodule -> GitHub)
- trading-platform (OrbiquanTIA)
- erp-suite con 5 verticales:
  - erp-core, construccion, vidrio-templado
  - mecanicas-diesel, retail, clinicas
- betting-analytics
- inmobiliaria-analytics
- platform_marketing_content
- pos-micro, erp-basico

Configuracion:
- .gitignore completo para Node.js/Python/Docker
- gamilit como submodule (git@github.com:rckrdmrd/gamilit-workspace.git)
- Sistema de puertos estandarizado (3005-3199)

Generated with NEXUS v3.4 Migration System
EPIC-010: Configuracion Git y Repositorios
2026-01-04 03:37:42 -06:00

9.7 KiB

SIMCO: GIT (Control de Versiones)

Version: 1.0.0 Fecha: 2025-12-12 Aplica a: TODO agente que modifica codigo Prioridad: OBLIGATORIA


RESUMEN EJECUTIVO

Todo cambio en codigo DEBE versionarse correctamente. Commits frecuentes, atomicos y descriptivos. Nunca perder trabajo por falta de commits.


PRINCIPIOS FUNDAMENTALES

╔══════════════════════════════════════════════════════════════════════╗
║                                                                       ║
║   "Commitear temprano, commitear frecuentemente"                     ║
║                                                                       ║
║   Cada commit debe:                                                   ║
║   - Representar un cambio logico completo                            ║
║   - Ser funcional (no romper compilacion)                            ║
║   - Ser reversible sin afectar otros cambios                         ║
║   - Tener mensaje descriptivo con ID de tarea                        ║
║                                                                       ║
╚══════════════════════════════════════════════════════════════════════╝

FRECUENCIA DE COMMITS

OBLIGATORIO_commitear:
  - Al finalizar cada fase (Analisis, Planeacion, Ejecucion)
  - Al completar cada archivo significativo
  - Cada 30-45 minutos de trabajo continuo
  - Antes de lanzar subagentes
  - Despues de validar trabajo de subagentes
  - Antes de cambiar de tarea
  - Cuando build + lint pasan

RAZON: "Minimizar perdida de trabajo en caso de error"

FORMATO DE MENSAJE DE COMMIT

Estructura Obligatoria

[{TAREA-ID}] {tipo}: {descripcion concisa}

{cuerpo opcional - descripcion detallada}

{footer opcional - referencias, breaking changes}

Ejemplos Correctos

# Feature nueva
[DB-042] feat: Crear tabla projects con soporte PostGIS

# Bug fix
[BE-015] fix: Corregir validacion de codigo unico en ProjectService

# Refactor
[FE-008] refactor: Extraer componente ProjectCard de ProjectList

# Documentacion
[DB-042] docs: Actualizar DATABASE_INVENTORY con tabla projects

# Tests
[BE-015] test: Agregar tests unitarios para ProjectService

# Subtarea
[DB-042-SUB-001] feat: Implementar indices para tabla projects

Ejemplos Incorrectos

# Sin ID de tarea
fix: Corregir bug

# Muy vago
[BE-015] update: Cambios varios

# Demasiado largo en primera linea
[DB-042] feat: Crear tabla projects con todas las columnas necesarias incluyendo soporte para PostGIS y configuracion de indices compuestos para optimizar queries

# Sin tipo
[FE-008] Mejorar componente

TIPOS DE COMMITS

Tipo Uso Ejemplo
feat Nueva funcionalidad [DB-042] feat: Agregar soporte PostGIS
fix Correccion de bug [BE-015] fix: Resolver error en constraint
refactor Refactorizacion sin cambio funcional [FE-008] refactor: Mejorar estructura componentes
docs Solo documentacion [DB-042] docs: Actualizar README con schema
test Agregar/modificar tests [BE-015] test: Agregar tests para ProjectService
chore Tareas de mantenimiento [DB-042] chore: Actualizar dependencias
style Formato/estilo (sin cambio logico) [FE-008] style: Aplicar prettier
perf Mejora de performance [DB-042] perf: Agregar indice compuesto
build Cambios en build/deps [BE-015] build: Actualizar TypeORM a v0.3
ci Cambios en CI/CD [INFRA-001] ci: Agregar workflow de tests

COMMITS ATOMICOS

Que es un Commit Atomico

atomico:
  - Representa UN cambio logico completo
  - Es funcional (build pasa)
  - Es reversible individualmente
  - No mezcla cambios no relacionados

NO_atomico:
  - Multiples cambios no relacionados
  - Trabajo incompleto (excepto WIP explicito)
  - Mezcla de fix y feat
  - Cambios en multiples features

Ejemplo de Atomicidad

# CORRECTO - Commits atomicos separados
[DB-042] feat: Crear tabla projects
[DB-042] feat: Agregar indices a tabla projects
[DB-042] feat: Crear seeds para projects
[DB-042] docs: Actualizar inventario con tabla projects

# INCORRECTO - Un commit masivo
[DB-042] feat: Crear tabla projects con indices, seeds y actualizacion de inventario

FLUJO DE TRABAJO GIT

Antes de Empezar Tarea

# 1. Asegurar rama actualizada
git fetch origin
git pull origin main

# 2. Crear rama de trabajo (si aplica)
git checkout -b feature/{TAREA-ID}-descripcion-corta

# 3. Verificar estado limpio
git status

Durante la Tarea

# 1. Hacer cambios
# ... editar archivos ...

# 2. Verificar que build pasa
npm run build
npm run lint

# 3. Agregar cambios
git add {archivos especificos}
# o para todos los cambios relacionados:
git add .

# 4. Commit con mensaje descriptivo
git commit -m "[TAREA-ID] tipo: descripcion"

# 5. Repetir para cada cambio logico

Al Completar Tarea

# 1. Verificar historial
git log --oneline -5

# 2. Push a remoto
git push origin {rama}

# 3. Crear PR si aplica
gh pr create --title "[TAREA-ID] Descripcion" --body "..."

CHECKLIST PRE-COMMIT

ANTES_de_cada_commit:
  - [ ] Build pasa sin errores
  - [ ] Lint pasa sin errores criticos
  - [ ] Tests pasan (si existen)
  - [ ] Cambios son logicamente completos
  - [ ] No hay archivos no deseados (node_modules, .env, etc.)
  - [ ] Mensaje sigue formato correcto

VERIFICAR:
  git status                 # Ver archivos modificados
  git diff                   # Ver cambios en detalle
  git diff --cached          # Ver cambios staged

ERRORES COMUNES

Error Consecuencia Solucion
No commitear frecuentemente Perdida de trabajo Commit cada 30-45 min
Commits masivos Dificil revertir Commits atomicos
Mensajes vagos Historial incomprensible Seguir formato
Commit con build roto Bloquea CI/CD Verificar antes de commit
Olvidar ID de tarea Perdida de trazabilidad Siempre incluir [TAREA-ID]
Commitear secretos Brecha de seguridad Verificar .gitignore

ARCHIVOS A IGNORAR (.gitignore)

SIEMPRE_ignorar:
  - node_modules/
  - .env
  - .env.*
  - dist/
  - build/
  - coverage/
  - *.log
  - .DS_Store
  - *.tmp
  - *.cache

NUNCA_commitear:
  - Credenciales
  - API keys
  - Passwords
  - Certificados privados
  - Archivos de configuracion local

RAMAS (BRANCHING)

Convencion de Nombres

ramas:
  feature: feature/{TAREA-ID}-descripcion-corta
  bugfix: bugfix/{TAREA-ID}-descripcion-corta
  hotfix: hotfix/{TAREA-ID}-descripcion-corta
  release: release/v{X.Y.Z}

ejemplos:
  - feature/DB-042-crear-tabla-projects
  - bugfix/BE-015-fix-validacion
  - hotfix/SEC-001-fix-xss
  - release/v2.1.0

Flujo de Ramas

main (produccion)
 │
 ├─── develop (desarrollo)
 │     │
 │     ├─── feature/DB-042-*
 │     │     └── merge a develop
 │     │
 │     ├─── feature/BE-015-*
 │     │     └── merge a develop
 │     │
 │     └── release/v2.1.0
 │           └── merge a main + tag
 │
 └─── hotfix/SEC-001-*
       └── merge a main + develop

REVERTIR CAMBIOS

Revertir Ultimo Commit (no pusheado)

# Mantener cambios en working directory
git reset --soft HEAD~1

# Descartar cambios completamente
git reset --hard HEAD~1

Revertir Commit ya Pusheado

# Crear commit de reversion (seguro)
git revert {commit-hash}
git push

Deshacer Cambios en Archivo

# Descartar cambios no staged
git checkout -- {archivo}

# Descartar cambios staged
git reset HEAD {archivo}
git checkout -- {archivo}

SITUACIONES ESPECIALES

Work in Progress (WIP)

# Cuando necesitas commitear trabajo incompleto
git commit -m "[TAREA-ID] WIP: descripcion de estado actual"

# Luego, completar y hacer commit final
# (opcional: squash commits WIP antes de PR)

Antes de Lanzar Subagente

# SIEMPRE commitear antes de delegar
git add .
git commit -m "[TAREA-ID] chore: Estado antes de delegacion a {SubAgente}"

Despues de Validar Subagente

# Commitear resultado de subagente
git add .
git commit -m "[TAREA-ID-SUB-XXX] tipo: Resultado de {SubAgente}"

VALIDACION DE COMMITS

Verificar Historial

# Ver ultimos commits
git log --oneline -10

# Ver commits de tarea especifica
git log --oneline --grep="DB-042"

# Ver cambios de un commit
git show {commit-hash}

Verificar Formato de Mensaje

formato_valido:
  - Tiene [TAREA-ID] al inicio
  - Tiene tipo valido (feat, fix, etc.)
  - Descripcion concisa (<72 caracteres primera linea)
  - No tiene errores de ortografia graves

verificar_manualmente:
  git log --oneline -1
  # Debe mostrar: {hash} [TAREA-ID] tipo: descripcion

REFERENCIAS

  • Principio de Validacion: @PRINCIPIOS/PRINCIPIO-VALIDACION-OBLIGATORIA.md
  • Documentar: @SIMCO/SIMCO-DOCUMENTAR.md
  • Crear: @SIMCO/SIMCO-CREAR.md

Version: 1.0.0 | Sistema: SIMCO | Mantenido por: Tech Lead