El intento anterior (correr cada celda por nombre, sin --all) también
aborta en el runner real ("Parsing files..." → "could not execute
command: aborted") — el problema no era --all. --dry-run sí funciona en
ese runner (nunca ejecuta nada él mismo), pero escribe el script
resuelto a stderr, no a stdout: el primer intento de "| bash" no
ejecutaba nada porque el pipe sólo captura stdout, y lo que se veía en
pantalla era stderr yendo directo a la terminal. Corregido con "2>&1
>/dev/null | bash". Probado localmente de extremo a extremo: las 4
celdas ejecutan de verdad (incluye verify-head devolviendo valid:true
real, no sólo el texto del comando).
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
4.3 KiB
RUNBOOK
Punto de entrada de la documentación ejecutable de esta instancia de
clusterlog (MCPS). Cada celda envuelve un comando canónico existente
(make, ./bin/clusterlog, un script en scripts/) — ninguna celda
contiene lógica propia. El desarrollo del motor mismo (compilar, probar,
bootstrap-instance) vive en
fenandosr/clusterlog; ver
runbooks/README.md para la convención completa de
nombres y etiquetas.
Este archivo funciona igual con o sin Runme instalado: cada bloque es un comando de shell normal que también puede copiarse y ejecutarse a mano.
Runbooks disponibles
runbooks/weekly-review.md— versión ejecutable de la reunión semanal (docs/WEEKLY_REVIEW.mdconserva la agenda).runbooks/_template.md— plantilla para runbooks nuevos.
Comprobaciones rápidas
set -euo pipefail
test -f zola.toml && test -f .clusterlog-version || { echo "ejecute esto desde la raíz de la instancia" >&2; exit 1; }
echo "clusterlog-version: $(cat .clusterlog-version)"
if command -v zola >/dev/null 2>&1; then echo "zola: $(zola --version)"; else echo "zola: no instalado (validate --skip-zola sigue funcionando)"; fi
if command -v runme >/dev/null 2>&1; then echo "runme: $(runme --version)"; else echo "runme: no instalado (make runme-install)"; fi
make sync-check
make validate-local
make site
clusterlog-site-build no lleva ci-safe: descarga el tema y las plantillas
del motor por red (make theme templates). La CI (.gitea/workflows/ci.yml)
ya construye el sitio en su propio paso; repetirlo aquí sería una segunda
copia de la misma lógica, no una celda adicional útil.
: "${CLUSTERLOG_SSH_KEY:?defina CLUSTERLOG_SSH_KEY con la ruta a su llave pública}"
./bin/clusterlog --root . --json --ssh-key "$CLUSTERLOG_SSH_KEY" review list --mine
clusterlog-review-mine tampoco lleva ci-safe: --mine resuelve identidad
a partir de una llave SSH personal, y CI no tiene ni debe tener acceso a
ninguna llave privada real.
./bin/clusterlog --root . --json verify commit HEAD
Ejecutar
Localmente, fuera de este runner, runme run --filename RUNBOOK.md --tag ci-safe --all --skip-prompts funciona normalmente. En este repositorio,
make runme-ci en cambio corre scripts/runme-ci.sh, que para cada celda
ci-safe extrae su script con runme run --dry-run <celda> (nunca ejecuta
nada por sí solo) y lo corre con bash, deteniéndose en el primer fallo:
runme run --filename RUNBOOK.md --dry-run clusterlog-runme-preflight | bash
runme run --filename RUNBOOK.md --dry-run clusterlog-sync-check | bash
runme run --filename RUNBOOK.md --dry-run clusterlog-validate-local | bash
runme run --filename RUNBOOK.md --dry-run clusterlog-verify-head | bash
Tanto runme run --all como invocar cada celda por nombre (sin --all)
abortan de inmediato en el runner real de esta instancia
("could not execute command: aborted", justo al entrar a "Parsing
files..."), algo que no se pudo reproducir en ninguna terminal local. Sólo
--dry-run evita esa ruta de código en ambos lados — ver scripts/runme-ci.sh
para el detalle completo, incluida la comprobación real
(clusterlog-verify-head corriendo y devolviendo valid: true de verdad).
Nunca ejecute runme run --all --skip-prompts sobre este archivo ni sobre
runbooks/weekly-review.md: sin filtrar por nombre o etiqueta, --all
también incluiría celdas que mutan estado real de esta instancia. Ésas
deben correrse una por una, a mano, después de revisar sus
prerrequisitos.