Files
brahman/scripts/check-shared-cores.sh
sergio efcf6f825f feat: guardián no_std de núcleos compartidos + doc de integración renaser
Endurece y documenta la integración renaser↔brahman tras el piloto
mirada-layout.

- scripts/check-shared-cores.sh: compila cada núcleo compartido
  registrado para x86_64-unknown-none. Si un núcleo recobra `std` en
  silencio (dep descuidada), falla aquí y no semanas después en
  renaser. Hoy cubre mirada-layout.
- docs/renaser-integracion.md: por qué renaser es un workspace aparte,
  el modelo núcleos-duales/superficies-por-plataforma, cómo se hace
  no_std un núcleo, y el estado del plan por etapas.

Paso 2 (converger el CAS) DESCARTADO tras leer el código: arje-cas
(blobs SHA256 sobre FS), renaser/almacen (DAG blake3+postcard sobre
virtio-blk) y minga-core (Merkle-AST con hash estructural) son tres
capas distintas, no una duplicación — converger impondría una
abstracción equivocada. Razonado en el doc.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-22 14:42:32 +00:00

61 lines
2.3 KiB
Bash
Executable File

#!/usr/bin/env bash
# =============================================================================
# brahman :: check-shared-cores.sh — guardián no_std de los núcleos compartidos
# -----------------------------------------------------------------------------
# Algunos crates de brahman son NÚCLEOS COMPARTIDOS: lógica pura que también
# compila el kernel bare-metal de renaser (ver docs/renaser-integracion.md).
# Para seguir siéndolo deben permanecer `no_std` — y eso se rompe en silencio
# con sólo añadir una dependencia que arrastre `std`.
#
# Este script es la red de seguridad: compila cada núcleo registrado para
# `x86_64-unknown-none` (el target del kernel de renaser). Si un núcleo
# recobró `std`, la compilación falla aquí y no semanas después en renaser.
#
# Uso: ./scripts/check-shared-cores.sh
# Sale 0 si todos los núcleos compilan no_std; 1 si alguno falla.
# =============================================================================
set -euo pipefail
# --- Núcleos compartidos registrados -----------------------------------------
# Al promover un crate a núcleo compartido (hacerlo `no_std` y enlazarlo desde
# renaser), añádelo a esta lista. Es el contrato: lo que está aquí, renaser lo
# puede consumir; mantenerlo no_std es obligatorio.
CORES=(
mirada-layout # motor de teselado del compositor (Fase 8 de renaser)
)
TARGET="x86_64-unknown-none"
cd "$(dirname "$0")/.."
echo "guardián no_std — núcleos compartidos brahman ↔ renaser"
echo "target bare-metal: ${TARGET}"
echo
# El target bare-metal debe estar instalado para el toolchain activo.
if ! rustup target list --installed 2>/dev/null | grep -qx "${TARGET}"; then
echo "instalando el target ${TARGET}"
rustup target add "${TARGET}"
fi
fallos=0
for core in "${CORES[@]}"; do
printf ' %-20s ' "${core}"
if cargo build -q -p "${core}" --target "${TARGET}" 2>/tmp/check-core-"${core}".log; then
echo "ok — compila no_std"
else
echo "FALLA — recobró std o no compila bare-metal"
sed 's/^/ /' /tmp/check-core-"${core}".log
fallos=$((fallos + 1))
fi
done
echo
if [ "${fallos}" -eq 0 ]; then
echo "todos los núcleos siguen siendo no_std (${#CORES[@]}/${#CORES[@]})."
exit 0
else
echo "${fallos} núcleo(s) rompieron la garantía no_std."
exit 1
fi