refactor: convertir este repositorio en instancia de clusterlog
CI / validate-and-build (push) Failing after 7s
CI / runme (push) Failing after 5s

Retira el código del motor (cmd/, internal/, go.mod, templates/,
examples/, scripts de desarrollo Go) — vive ahora en
https://github.com/fenandosr/clusterlog (release v0.1.0). Este
repositorio conserva únicamente content/, data/, config/ y zola.toml:
los datos reales de esta instancia (MCPS).

Se agrega .clusterlog-version (fija v0.1.0) y scripts/fetch-engine.sh,
que descarga el binario y las plantillas del motor por versión fijada
verificando su checksum contra el release. Makefile y
.gitea/workflows/ci.yml se adaptan para descargar en vez de compilar.
RUNBOOK.md y runbooks/ se recortan a las celdas que sí operan sobre
datos reales de esta instancia (sync-check, validate-local, site-build,
review-mine, verify-head); el ciclo de desarrollo del motor mismo
(build/test/vet) vive en su propio repositorio.

Se preserva toda la historia existente: éste es un commit nuevo, no una
reescritura. Ver docs/adr/0005-motor-instancia.md en el repositorio del
motor para el contexto completo de la separación.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-27 00:40:26 -06:00
co-authored by Claude Sonnet 5
parent 5240cfd8c2
commit eac5e22ed1
81 changed files with 186 additions and 8411 deletions
+22 -45
View File
@@ -1,9 +1,11 @@
# RUNBOOK
Punto de entrada de la documentación ejecutable de `clusterlog`. Cada celda de
abajo envuelve un comando canónico existente (`make`, `./bin/clusterlog`, un
script en `scripts/`) — ninguna celda contiene lógica propia. Ver
[`docs/RUNME.md`](docs/RUNME.md) para el porqué y el modelo de identidad, y
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.
@@ -12,45 +14,35 @@ comando de shell normal que también puede copiarse y ejecutarse a mano.
## Runbooks disponibles
- [`runbooks/clusterlog-development.md`](runbooks/clusterlog-development.md) — ciclo de desarrollo (build, test, vet, sync, validate, sitio).
- [`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-developer,env-local,risk-read-only,ci-safe","interactive":"false"}
```sh {"name":"clusterlog-runme-preflight","tag":"role-operator,env-local,risk-read-only,ci-safe","interactive":"false"}
set -euo pipefail
test -f go.mod && test -f Makefile || { echo "ejecute esto desde la raíz de clusterlog" >&2; exit 1; }
echo "go: $(go version)"
echo "git: $(git --version)"
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-build","tag":"role-developer,env-local,risk-read-only,ci-safe","interactive":"false"}
make build
```
```sh {"name":"clusterlog-test","tag":"role-developer,env-local,risk-read-only,ci-safe","interactive":"false"}
make test
```
```sh {"name":"clusterlog-sync-check","tag":"role-developer,env-local,risk-read-only,ci-safe","interactive":"false"}
```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-developer,env-local,risk-read-only,ci-safe","interactive":"false"}
```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-developer,env-local,risk-read-only","interactive":"false"}
```sh {"name":"clusterlog-site-build","tag":"role-operator,env-local,risk-read-only","interactive":"false"}
make site
```
`clusterlog-site-build` no lleva `ci-safe`: `make site` incluye `make theme`,
que clona el repositorio del tema por red. La CI principal
(`.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-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}"
@@ -67,29 +59,14 @@ ninguna llave privada real.
## Ejecutar
Ejemplo (nota: éste es texto de referencia, no una celda ejecutable —
usa fence ` ```text ` a propósito para que Runme no lo liste como comando):
```text
runme run --filename RUNBOOK.md clusterlog-build
```
o, sin Runme instalado, copie y corra el comando dentro del bloque
directamente. `make runme-ci` ejecuta:
```text
runme run --filename RUNBOOK.md --tag ci-safe --all --skip-prompts
```
`runme run` sí acepta `--tag`/`--all` (verificado con el binario real de
`v3.17.4`: un tag inexistente devuelve `No tasks to execute with the tag
provided`, y `--tag ci-safe --all` corre exactamente las celdas marcadas
`ci-safe`, en orden, deteniéndose en el primer fallo). Como es un filtro
explícito por etiqueta de seguridad — no "correr todo" — este uso puntual sí
es seguro.
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. Ésas deben correrse una por
una, a mano, después de revisar sus
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.