workspace-v1/03-fase-shared-infra/VALIDACION/CHECKLIST.md
Adrian Flores Cortes 967ab360bb Initial commit: Workspace v1 with 3-layer architecture
Structure:
- control-plane/: Registries, SIMCO directives, CI/CD templates
- projects/: Gamilit, ERP-Suite, Trading-Platform, Betting-Analytics
- shared/: Libs catalog, knowledge-base

Key features:
- Centralized port, domain, database, and service registries
- 23 SIMCO directives + 6 fundamental principles
- NEXUS agent profiles with delegation rules
- Validation scripts for workspace integrity
- Dockerfiles for all services
- Path aliases for quick reference

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-23 00:35:19 -06:00

7.1 KiB

FASE 3 - CHECKLIST DE VALIDACION

Fase: 3 - Shared Infrastructure Estado: Pendiente Validador: DevOps-Agent + Tech-Leader


CHECKLIST DE ESTRUCTURA

Carpetas

[ ] control-plane/devtools/docker/networks/ existe
[ ] control-plane/devtools/docker/traefik/ existe
[ ] control-plane/devtools/docker/traefik/dynamic/ existe
[ ] control-plane/devtools/docker/templates/ existe
[ ] control-plane/devtools/configs/env/ existe
[ ] control-plane/devtools/scripts/bootstrap/ existe

CHECKLIST DE DOCKER NETWORKS

networks.yml

[ ] Archivo existe en docker/networks/
[ ] Define red infra_shared
[ ] Define redes por proyecto:
    [ ] gamilit_{env} para todos los ambientes
    [ ] erp_{env} para todos los ambientes
    [ ] trading_{env} para todos los ambientes
    [ ] betting_{env} para todos los ambientes
[ ] Es YAML valido

create-networks.sh

[ ] Archivo existe
[ ] Es ejecutable (chmod +x)
[ ] Crea red infra_shared
[ ] Crea redes por proyecto y ambiente
[ ] Es idempotente (no falla si red existe)
[ ] Ejecuta sin errores

Validacion funcional

# Ejecutar script
./create-networks.sh

# Verificar redes creadas
docker network ls | grep infra_shared
docker network ls | grep gamilit_local
docker network ls | grep erp_local

CHECKLIST DE TRAEFIK

traefik.yml

[ ] Archivo existe en docker/traefik/
[ ] Define entryPoints (web:80, websecure:443)
[ ] Configura provider Docker
[ ] Configura provider File para dynamic config
[ ] exposedByDefault: false
[ ] Dashboard habilitado

docker-compose.traefik.yml

[ ] Archivo existe
[ ] Usa imagen traefik:v2.x
[ ] Expone puertos 80, 443, 8080
[ ] Monta traefik.yml
[ ] Monta directorio dynamic/
[ ] Conecta a red infra_shared

dynamic/routers.yml

[ ] Archivo existe
[ ] Define routers para gamilit (api, web)
[ ] Define routers para erp (api, web)
[ ] Routers usan dominios de domains.registry.yml
[ ] EntryPoints correctos

dynamic/middlewares.yml

[ ] Archivo existe
[ ] Define middleware rate-limit
[ ] Define middleware cors-headers
[ ] Define middleware security-headers

Validacion funcional

# Levantar Traefik
docker-compose -f docker-compose.traefik.yml up -d

# Verificar dashboard
curl -s http://localhost:8080/api/overview | jq .

# Verificar que esta escuchando
curl -I http://localhost:80

CHECKLIST DE TEMPLATES

docker-compose.base.yml

[ ] Archivo existe en docker/templates/
[ ] Define x-logging anchor
[ ] Define x-healthcheck anchor
[ ] Incluye comentarios de uso

docker-compose.backend.yml

[ ] Archivo existe
[ ] Usa expose (NO ports)
[ ] Tiene labels de Traefik
[ ] Conecta a redes: {proyecto}_{env} e infra_shared
[ ] Redes son external: true
[ ] Tiene healthcheck configurado
[ ] Tiene logging configurado
[ ] Placeholders documentados:
    [ ] {{SERVICE_NAME}}
    [ ] {{PORT}}
    [ ] {{DOMAIN}}
    [ ] {{PROJECT}}

docker-compose.frontend.yml

[ ] Archivo existe
[ ] Similar estructura a backend
[ ] Placeholders documentados

docker-compose.fullstack.yml

[ ] Archivo existe
[ ] Combina backend + frontend
[ ] Dependencias entre servicios definidas

CHECKLIST DE ENVIRONMENT

.env.template

[ ] Archivo existe en configs/env/
[ ] Variables de ambiente (NODE_ENV, ENV)
[ ] Variables de BD (host, port, name, user, password)
[ ] Variables de Redis
[ ] Variables de JWT
[ ] Variables de logging
[ ] Comentarios explicativos

.env.local.template

[ ] Archivo existe
[ ] Valores apropiados para desarrollo local
[ ] Passwords de ejemplo (no reales)

CHECKLIST DE SCRIPTS

init-workspace.sh

[ ] Archivo existe en scripts/bootstrap/
[ ] Es ejecutable
[ ] Verifica prerequisitos (Docker)
[ ] Crea redes Docker
[ ] Levanta Traefik
[ ] Muestra instrucciones post-setup

init-project.sh

[ ] Archivo existe
[ ] Es ejecutable
[ ] Acepta parametros (proyecto, tipo)
[ ] Genera docker-compose desde template
[ ] Genera .env desde template
[ ] Verifica que red existe

VALIDACION INTEGRADA

#!/bin/bash
# validate-phase3.sh

CONTROL_PLANE="/home/adrian/Documentos/workspace-v1/control-plane"

echo "=== Validando Fase 3: Shared Infrastructure ==="

# 1. Verificar estructura
echo "Verificando estructura..."
REQUIRED_DIRS=(
    "devtools/docker/networks"
    "devtools/docker/traefik"
    "devtools/docker/traefik/dynamic"
    "devtools/docker/templates"
    "devtools/configs/env"
    "devtools/scripts/bootstrap"
)

for dir in "${REQUIRED_DIRS[@]}"; do
    if [ -d "$CONTROL_PLANE/$dir" ]; then
        echo "  [OK] $dir/"
    else
        echo "  [FAIL] $dir/ no existe"
    fi
done

# 2. Verificar archivos clave
echo ""
echo "Verificando archivos..."
REQUIRED_FILES=(
    "devtools/docker/networks/networks.yml"
    "devtools/docker/networks/create-networks.sh"
    "devtools/docker/traefik/traefik.yml"
    "devtools/docker/traefik/docker-compose.traefik.yml"
    "devtools/docker/templates/docker-compose.backend.yml"
    "devtools/configs/env/.env.template"
    "devtools/scripts/bootstrap/init-workspace.sh"
)

for file in "${REQUIRED_FILES[@]}"; do
    if [ -f "$CONTROL_PLANE/$file" ]; then
        echo "  [OK] $file"
    else
        echo "  [FAIL] $file no existe"
    fi
done

# 3. Verificar scripts ejecutables
echo ""
echo "Verificando permisos..."
SCRIPTS=(
    "devtools/docker/networks/create-networks.sh"
    "devtools/scripts/bootstrap/init-workspace.sh"
)

for script in "${SCRIPTS[@]}"; do
    if [ -x "$CONTROL_PLANE/$script" ]; then
        echo "  [OK] $script es ejecutable"
    else
        echo "  [FAIL] $script no es ejecutable"
    fi
done

# 4. Verificar YAML valido
echo ""
echo "Verificando YAML..."
YAML_FILES=(
    "devtools/docker/networks/networks.yml"
    "devtools/docker/traefik/traefik.yml"
    "devtools/docker/traefik/docker-compose.traefik.yml"
)

for file in "${YAML_FILES[@]}"; do
    if python3 -c "import yaml; yaml.safe_load(open('$CONTROL_PLANE/$file'))" 2>/dev/null; then
        echo "  [OK] $file (YAML valido)"
    else
        echo "  [FAIL] $file (YAML invalido)"
    fi
done

echo ""
echo "=== Validacion completada ==="

CRITERIOS DE APROBACION

Para aprobar esta fase:

  1. 100% estructura creada

  2. Networks funcionales

    • Script crea redes sin errores
    • Redes listables con docker network ls
  3. Traefik funcional

    • Levanta con docker-compose
    • Dashboard accesible en :8080
    • Routing funciona (con servicios de prueba)
  4. Templates usables

    • Copiar template
    • Reemplazar placeholders
    • docker-compose up funciona
  5. Scripts funcionales

    • init-workspace.sh ejecuta sin errores
    • init-project.sh genera archivos correctamente

SIGUIENTE FASE

Una vez aprobada la Fase 3, proceder a:

Fase 4: Migracion de Proyectos

  • Comenzar con Gamilit (proyecto modelo)
  • Crear estructura en repo independiente
  • Crear service descriptors
  • Aplicar templates de docker-compose

Validador: DevOps-Agent + Tech-Leader Fecha de Validacion: _________ Estado: [ ] Aprobado [ ] Rechazado Notas: _________