# 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](https://github.com/fenandosr/clusterlog); ver [`runbooks/README.md`](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`](runbooks/weekly-review.md) — versión ejecutable de la reunión semanal ([`docs/WEEKLY_REVIEW.md`](docs/WEEKLY_REVIEW.md) conserva la agenda). - [`runbooks/_template.md`](runbooks/_template.md) — plantilla para runbooks nuevos. ## Comprobaciones rápidas ```sh {"name":"clusterlog-runme-preflight","tag":"role-operator,env-local,risk-read-only,ci-safe","interactive":"false"} 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 ``` ```sh {"name":"clusterlog-sync-check","tag":"role-operator,env-local,risk-read-only,ci-safe","interactive":"false"} make sync-check ``` ```sh {"name":"clusterlog-validate-local","tag":"role-operator,env-local,risk-read-only,ci-safe","interactive":"false"} make validate-local ``` ```sh {"name":"clusterlog-site-build","tag":"role-operator,env-local,risk-read-only","interactive":"false"} 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. ```sh {"name":"clusterlog-review-mine","tag":"role-reviewer,env-local,risk-read-only","interactive":"false"} : "${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. ```sh {"name":"clusterlog-verify-head","tag":"role-reviewer,env-local,risk-read-only,ci-safe","interactive":"false"} ./bin/clusterlog --root . --json verify commit HEAD ``` ## Ejecutar ```text runme run --filename RUNBOOK.md --tag ci-safe --all --skip-prompts ``` es lo que corre `make runme-ci`: exactamente las celdas marcadas `ci-safe`, en orden, deteniéndose en el primer fallo (verificado con Runme real; ver el ADR-0004 del motor). Nunca ejecute `runme run --all --skip-prompts` **sin** `--tag ci-safe` sobre este archivo ni sobre `runbooks/weekly-review.md`: sin ese filtro, `--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.