workspace-v1/01-fase-control-plane/PLANEACION/00-TAREAS.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

10 KiB

FASE 1 - SUBFASE C: LISTA DE TAREAS

Fase: 1 - Control Plane Subfase: C - Planeacion de Implementacion Estado: Pendiente Dependencia: Analisis completado


RESUMEN DE TAREAS

ID Tarea Prioridad Agente Dependencias
T1.1.1 Crear estructura base control-plane P0 Architecture-Analyst -
T1.1.2 Crear carpetas orchestration P0 Architecture-Analyst T1.1.1
T1.1.3 Crear carpetas registries P0 Architecture-Analyst T1.1.1
T1.1.4 Crear carpetas manifests P0 Architecture-Analyst T1.1.1
T1.1.5 Crear carpetas ci P0 DevOps-Agent T1.1.1
T1.2.1 Crear ports.registry.yml P0 DevOps-Agent T1.1.3
T1.2.2 Crear domains.registry.yml P0 DevOps-Agent T1.1.3
T1.2.3 Crear databases.registry.yml P0 DevOps-Agent T1.1.3
T1.2.4 Crear services.registry.yml P1 DevOps-Agent T1.1.3
T1.2.5 Crear secrets.policy.yml P1 DevOps-Agent T1.1.3
T1.3.1 Crear repos.manifest.yml P0 Architecture-Analyst T1.1.4
T1.3.2 Crear environments.manifest.yml P0 Architecture-Analyst T1.1.4
T1.4.1 Migrar devtools/scripts P1 DevOps-Agent T1.1.1
T1.4.2 Crear validate-ports.sh P1 DevOps-Agent T1.2.1
T1.4.3 Crear validate-domains.sh P2 DevOps-Agent T1.2.2
T1.4.4 Crear validate-databases.sh P2 DevOps-Agent T1.2.3

DETALLE DE TAREAS

T1.1.1: Crear estructura base control-plane

Descripcion: Crear la estructura de carpetas raiz del control-plane

Comandos:

mkdir -p /home/adrian/Documentos/workspace-v1/control-plane/{orchestration,registries,manifests,ci,devtools,docs}

Validacion:

ls -la /home/adrian/Documentos/workspace-v1/control-plane/
# Debe mostrar: orchestration, registries, manifests, ci, devtools, docs

Entregable: Estructura de carpetas creada


T1.1.2: Crear carpetas orchestration

Descripcion: Crear subestructura de orchestration

Comandos:

mkdir -p /home/adrian/Documentos/workspace-v1/control-plane/orchestration/{agents/{perfiles,legacy},directivas/{simco,principios,legacy},templates,checklists,patrones,referencias,impactos,inventarios}

Archivos a crear:

orchestration/
  +-- README.md              # Descripcion del sistema
  +-- _INDEX.md              # Indice de contenido

T1.1.3: Crear carpetas registries

Descripcion: Crear estructura para registries

Comandos:

mkdir -p /home/adrian/Documentos/workspace-v1/control-plane/registries

Archivos a crear (templates vacios):

registries/
  +-- README.md
  +-- ports.registry.yml
  +-- domains.registry.yml
  +-- databases.registry.yml
  +-- services.registry.yml
  +-- secrets.policy.yml

T1.2.1: Crear ports.registry.yml

Descripcion: Crear archivo de registro de puertos con estructura completa

Contenido esperado:

# ports.registry.yml
version: "1.0.0"
updated: "YYYY-MM-DD"

rules:
  public_ingress_only:
    description: "Solo reverse proxy expone puertos publicos"
    allowed_public_ports: [80, 443]
  internal_ranges:
    backend_api: "3000-3099"
    frontend_web: "3100-3199"
    databases: "5432-5499"
    cache: "6379-6399"

allocations:
  infrastructure:
    traefik:
      public: [80, 443]
      dashboard: { internal: 8080 }
    postgres:
      internal: 5432
    redis:
      internal: 6379

  gamilit:
    api:
      internal: 3000
      environment: [dev, prod]
    web:
      internal: 3001
      environment: [dev, prod]

  erp_suite:
    api:
      internal: 3010
      environment: [dev, prod]
    web:
      internal: 3011
      environment: [dev, prod]

  trading:
    api:
      internal: 3020
      environment: [dev, prod]
    web:
      internal: 3021
      environment: [dev, prod]

T1.2.2: Crear domains.registry.yml

Descripcion: Crear archivo de registro de dominios

Contenido esperado:

# domains.registry.yml
version: "1.0.0"
updated: "YYYY-MM-DD"

base_domains:
  production: "tu-dominio.com"
  development: "dev.tu-dominio.com"
  local: "localhost"

allocations:
  gamilit:
    production:
      api: "api.gamilit.tu-dominio.com"
      web: "gamilit.tu-dominio.com"
    development:
      api: "api.gamilit.dev.tu-dominio.com"
      web: "gamilit.dev.tu-dominio.com"
    local:
      api: "api.gamilit.localhost"
      web: "gamilit.localhost"

  erp_suite:
    production:
      api: "api.erp.tu-dominio.com"
      web: "erp.tu-dominio.com"
    # ... similar

T1.2.3: Crear databases.registry.yml

Descripcion: Crear archivo de registro de bases de datos

Contenido esperado:

# databases.registry.yml
version: "1.0.0"
updated: "YYYY-MM-DD"

postgres_instance:
  host: "localhost"
  port: 5432
  superuser: "postgres"

databases:
  gamilit:
    db_name: "gamilit_db"
    roles:
      owner: "app_gamilit_owner"
      runtime: "app_gamilit_runtime"
      migrator: "app_gamilit_migrator"
    schemas: ["public", "auth", "gamification"]
    rls_enabled: true

  erp_suite:
    db_name: "erp_suite_db"
    roles:
      owner: "app_erp_owner"
      runtime: "app_erp_runtime"
      migrator: "app_erp_migrator"
    schemas: ["core", "inventory", "sales", "hr"]
    rls_enabled: true

  trading:
    db_name: "trading_db"
    roles:
      owner: "app_trading_owner"
      runtime: "app_trading_runtime"
      migrator: "app_trading_migrator"
    schemas: ["public", "market", "portfolio"]
    rls_enabled: true

policies:
  runtime_restrictions:
    - "NO CREATE EXTENSION"
    - "NO CREATE ROLE"
    - "NO ALTER outside migrations"
  migration_requirements:
    - "Version controlled"
    - "Reversible (up/down)"
    - "Reviewed before apply"

T1.3.1: Crear repos.manifest.yml

Descripcion: Crear manifiesto de repositorios

Contenido esperado:

# repos.manifest.yml
version: "1.0.0"
updated: "YYYY-MM-DD"

layers:
  control_plane:
    description: "Meta-repositorio de gobernanza"
    repos:
      - name: "workspace-control-plane"
        path: "/home/adrian/Documentos/workspace-v1/control-plane"
        type: "governance"
        contains: ["orchestration", "registries", "manifests", "ci", "devtools"]

  products:
    description: "Repositorios de productos"
    repos:
      - name: "gamilit-platform"
        path: "/home/adrian/Documentos/workspace-v1/repos/gamilit-platform"
        type: "product"
        stack: ["nestjs", "react", "postgres"]

      - name: "erp-suite"
        path: "/home/adrian/Documentos/workspace-v1/repos/erp-suite"
        type: "product-suite"
        stack: ["express", "react", "postgres"]

      - name: "trading-platform"
        path: "/home/adrian/Documentos/workspace-v1/repos/trading-platform"
        type: "product"
        stack: ["express", "fastapi", "react", "postgres"]

  shared:
    description: "Repositorios compartidos"
    repos:
      - name: "shared-libs"
        path: "/home/adrian/Documentos/workspace-v1/repos/shared-libs"
        type: "library"
        packages: ["utils", "auth", "ui-components"]

      - name: "shared-infra"
        path: "/home/adrian/Documentos/workspace-v1/repos/shared-infra"
        type: "infrastructure"
        contains: ["reverse-proxy", "observability"]

      - name: "knowledge-base"
        path: "/home/adrian/Documentos/workspace-v1/repos/knowledge-base"
        type: "documentation"
        contains: ["sources", "indexes"]

T1.3.2: Crear environments.manifest.yml

Descripcion: Crear manifiesto de ambientes

Contenido esperado:

# environments.manifest.yml
version: "1.0.0"
updated: "YYYY-MM-DD"

environments:
  local:
    description: "Desarrollo local"
    network_prefix: "local_"
    domain_suffix: ".localhost"
    ssl: false

  development:
    description: "Ambiente de desarrollo compartido"
    network_prefix: "dev_"
    domain_suffix: ".dev.tu-dominio.com"
    ssl: true
    server: "mismo-servidor"

  staging:
    description: "Pre-produccion"
    network_prefix: "stg_"
    domain_suffix: ".staging.tu-dominio.com"
    ssl: true
    server: "mismo-servidor"

  production:
    description: "Produccion"
    network_prefix: "prod_"
    domain_suffix: ".tu-dominio.com"
    ssl: true
    server: "mismo-servidor"

isolation:
  strategy: "docker-networks"
  rules:
    - "Cada producto tiene su red por ambiente"
    - "Solo traefik conecta redes"
    - "No exposicion directa de puertos"

T1.4.2: Crear validate-ports.sh

Descripcion: Script de validacion de puertos contra registry

Contenido esperado:

#!/bin/bash
# validate-ports.sh
# Valida que los puertos en docker-compose coincidan con ports.registry.yml

set -e

REGISTRY_FILE="${CONTROL_PLANE}/registries/ports.registry.yml"
COMPOSE_FILES=$(find . -name "docker-compose*.yml" -o -name "compose*.yml")

echo "=== Validando puertos contra registry ==="

# Extraer puertos del registry
ALLOWED_PORTS=$(yq '.allocations | .. | .internal // .public | .[]?' "$REGISTRY_FILE" 2>/dev/null | sort -u)

# Validar cada compose file
for file in $COMPOSE_FILES; do
    echo "Validando: $file"
    COMPOSE_PORTS=$(grep -oP '(?<=:)\d+(?=:)' "$file" 2>/dev/null || true)

    for port in $COMPOSE_PORTS; do
        if ! echo "$ALLOWED_PORTS" | grep -q "^$port$"; then
            echo "ERROR: Puerto $port en $file no esta en registry"
            exit 1
        fi
    done
done

echo "=== Validacion exitosa ==="

ORDEN DE EJECUCION

Dia 1:
  [x] T1.1.1 - Estructura base
  [x] T1.1.2 - Carpetas orchestration
  [x] T1.1.3 - Carpetas registries
  [x] T1.1.4 - Carpetas manifests
  [x] T1.1.5 - Carpetas ci

Dia 2:
  [ ] T1.2.1 - ports.registry.yml
  [ ] T1.2.2 - domains.registry.yml
  [ ] T1.2.3 - databases.registry.yml
  [ ] T1.3.1 - repos.manifest.yml
  [ ] T1.3.2 - environments.manifest.yml

Dia 3:
  [ ] T1.2.4 - services.registry.yml
  [ ] T1.2.5 - secrets.policy.yml
  [ ] T1.4.1 - Migrar devtools
  [ ] T1.4.2 - validate-ports.sh
  [ ] T1.4.3 - validate-domains.sh
  [ ] T1.4.4 - validate-databases.sh

CRITERIOS DE COMPLETITUD

[ ] Todas las carpetas creadas
[ ] Todos los registries con estructura valida
[ ] Todos los manifests con estructura valida
[ ] Scripts de validacion funcionales
[ ] README.md en cada carpeta principal
[ ] Sin errores de sintaxis en YAMLs

Siguiente paso: Validar este plan en 01-VALIDACION.md