workspace/devtools/scripts/validation/validate-propagation.sh
rckrdmrd 4ac2b7aa0d
Some checks are pending
CI Pipeline / changes (push) Waiting to run
CI Pipeline / core (push) Blocked by required conditions
CI Pipeline / trading-backend (push) Blocked by required conditions
CI Pipeline / trading-data-service (push) Blocked by required conditions
CI Pipeline / trading-frontend (push) Blocked by required conditions
CI Pipeline / erp-core (push) Blocked by required conditions
CI Pipeline / erp-mecanicas (push) Blocked by required conditions
CI Pipeline / gamilit-backend (push) Blocked by required conditions
CI Pipeline / gamilit-frontend (push) Blocked by required conditions
Add orchestration templates, agent profiles, and validation scripts
- New agent profiles: DevOps, Security Auditor, Testing
- New templates: Sprint report, HU derivada, Analysis impact
- Onboarding guide for projects
- Validation scripts for CAPVED gate, inventory coherence, propagation
- Platform marketing content orchestration state files

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-12 07:54:33 -06:00

205 lines
6.8 KiB
Bash
Executable File

#!/bin/bash
# =============================================================================
# SCRIPT: validate-propagation.sh
# PROPOSITO: Validar que la propagacion de documentacion esta completa
# SISTEMA: SIMCO + CAPVED
# VERSION: 1.0.0
# =============================================================================
set -e
WORKSPACE_ROOT="${HOME}/workspace"
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
echo "=============================================="
echo " VALIDACION DE PROPAGACION SIMCO"
echo "=============================================="
echo ""
ERRORS=0
WARNINGS=0
# -----------------------------------------------------------------------------
# Funcion: Verificar que archivo existe
# -----------------------------------------------------------------------------
check_file_exists() {
local file="$1"
local description="$2"
if [ -f "$file" ]; then
echo -e "${GREEN}[OK]${NC} $description"
return 0
else
echo -e "${RED}[FAIL]${NC} $description - Archivo no existe: $file"
((ERRORS++))
return 1
fi
}
# -----------------------------------------------------------------------------
# Funcion: Verificar que directorio existe
# -----------------------------------------------------------------------------
check_dir_exists() {
local dir="$1"
local description="$2"
if [ -d "$dir" ]; then
echo -e "${GREEN}[OK]${NC} $description"
return 0
else
echo -e "${RED}[FAIL]${NC} $description - Directorio no existe: $dir"
((ERRORS++))
return 1
fi
}
# -----------------------------------------------------------------------------
# Funcion: Verificar WORKSPACE-STATUS.md actualizado
# -----------------------------------------------------------------------------
check_workspace_status() {
local status_file="${WORKSPACE_ROOT}/orchestration/WORKSPACE-STATUS.md"
echo ""
echo "--- Verificando WORKSPACE-STATUS.md ---"
if [ -f "$status_file" ]; then
# Verificar que fue actualizado en los ultimos 7 dias
local last_modified=$(stat -c %Y "$status_file" 2>/dev/null || stat -f %m "$status_file" 2>/dev/null)
local now=$(date +%s)
local diff=$((now - last_modified))
local days=$((diff / 86400))
if [ $days -gt 7 ]; then
echo -e "${YELLOW}[WARN]${NC} WORKSPACE-STATUS.md no actualizado en $days dias"
((WARNINGS++))
else
echo -e "${GREEN}[OK]${NC} WORKSPACE-STATUS.md actualizado (hace $days dias)"
fi
else
echo -e "${RED}[FAIL]${NC} WORKSPACE-STATUS.md no existe"
((ERRORS++))
fi
}
# -----------------------------------------------------------------------------
# Funcion: Verificar proyecto individual
# -----------------------------------------------------------------------------
check_project() {
local project_path="$1"
local project_name=$(basename "$project_path")
echo ""
echo "--- Verificando proyecto: $project_name ---"
local orch_path="${project_path}/orchestration"
# Verificar estructura basica
check_dir_exists "${orch_path}" "orchestration/"
check_dir_exists "${orch_path}/00-guidelines" "00-guidelines/"
check_dir_exists "${orch_path}/inventarios" "inventarios/"
check_dir_exists "${orch_path}/estados" "estados/"
check_dir_exists "${orch_path}/trazas" "trazas/"
# Verificar archivos obligatorios
check_file_exists "${orch_path}/00-guidelines/CONTEXTO-PROYECTO.md" "CONTEXTO-PROYECTO.md"
check_file_exists "${orch_path}/00-guidelines/HERENCIA-SIMCO.md" "HERENCIA-SIMCO.md"
check_file_exists "${orch_path}/PROXIMA-ACCION.md" "PROXIMA-ACCION.md"
# Verificar inventarios
check_file_exists "${orch_path}/inventarios/MASTER_INVENTORY.yml" "MASTER_INVENTORY.yml"
# Verificar registro de subagentes
check_file_exists "${orch_path}/estados/REGISTRO-SUBAGENTES.json" "REGISTRO-SUBAGENTES.json"
}
# -----------------------------------------------------------------------------
# Funcion: Verificar referencias en inventarios no estan rotas
# -----------------------------------------------------------------------------
check_inventory_references() {
local inventory_file="$1"
local base_path="$2"
echo ""
echo "--- Verificando referencias en: $(basename $inventory_file) ---"
if [ ! -f "$inventory_file" ]; then
echo -e "${YELLOW}[SKIP]${NC} Archivo no existe"
return
fi
# Extraer rutas de archivos del inventario (simplificado)
local refs=$(grep -oE 'file:\s*"?[^"]+\.(ts|sql|tsx|md)"?' "$inventory_file" 2>/dev/null | sed 's/file:\s*"//g' | sed 's/"//g' || true)
local broken=0
for ref in $refs; do
# Convertir ruta relativa a absoluta si es necesario
if [[ ! "$ref" = /* ]]; then
ref="${base_path}/${ref}"
fi
if [ ! -f "$ref" ]; then
echo -e "${RED}[BROKEN]${NC} Referencia rota: $ref"
((broken++))
fi
done
if [ $broken -eq 0 ]; then
echo -e "${GREEN}[OK]${NC} Todas las referencias validas"
else
((ERRORS += broken))
fi
}
# -----------------------------------------------------------------------------
# MAIN
# -----------------------------------------------------------------------------
# Verificar core
echo ""
echo "========== CORE =========="
check_dir_exists "${WORKSPACE_ROOT}/core/orchestration" "core/orchestration"
check_file_exists "${WORKSPACE_ROOT}/core/orchestration/directivas/simco/_INDEX.md" "SIMCO Index"
# Verificar cada proyecto
echo ""
echo "========== PROYECTOS =========="
for project_dir in ${WORKSPACE_ROOT}/projects/*/; do
if [ -d "$project_dir" ]; then
check_project "$project_dir"
fi
done
# Verificar WORKSPACE-STATUS
check_workspace_status
# -----------------------------------------------------------------------------
# RESUMEN
# -----------------------------------------------------------------------------
echo ""
echo "=============================================="
echo " RESUMEN DE VALIDACION"
echo "=============================================="
echo ""
if [ $ERRORS -eq 0 ] && [ $WARNINGS -eq 0 ]; then
echo -e "${GREEN}RESULTADO: PROPAGACION COMPLETA${NC}"
echo "Todos los archivos y referencias estan correctos."
exit 0
elif [ $ERRORS -eq 0 ]; then
echo -e "${YELLOW}RESULTADO: PROPAGACION CON ADVERTENCIAS${NC}"
echo "Advertencias: $WARNINGS"
echo "Errores: 0"
exit 0
else
echo -e "${RED}RESULTADO: PROPAGACION INCOMPLETA${NC}"
echo "Errores: $ERRORS"
echo "Advertencias: $WARNINGS"
echo ""
echo "Corrige los errores antes de continuar."
exit 1
fi