latido: el contrato del kernel se comprueba solo en cada cosecha
El gate de SDD 25 §4.ter existía y NADIE lo corría. Un kernel reconstruido sin MEMCG volvería a pasar inadvertido — y ese fallo no se ve del lado del desarrollo, porque el kernel de la máquina de trabajo sí trae MEMCG: sólo se ve comprobando el artefacto. Mismo cable que el vigía de fuentes y por la misma razón que está escrita ahí arriba: lo que nadie refresca envejece hacia el optimismo. Ahora cada ciclo deja el veredicto en docs/state/kernel-contract.txt y el git log lo muestra como el resto del khipu. El fichero se escribe por temporal y sólo se mueve si tiene contenido: contract sale != 0 cuando el contrato no se cumple —y ese rojo es justo lo que hay que guardar—, pero un fichero vacío se leería como «nada que objetar». Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01ACUcwo9mZsE5ocYVE9npih
This commit is contained in:
@@ -186,6 +186,22 @@ if [ -x "$HAMMER" ]; then
|
||||
# No descarga: pide cabeceras. Primera corrida (2026-08-26): 8 muertas de 1167, y TRES de ellas
|
||||
# —busybox, freetype, freetype-shared— selladas y en uso.
|
||||
scripts/fuentes/fuentes-vigia.sh >/dev/null 2>&1 && echo " fuentes-vigia.json ✓" || echo " ⚠ fuentes-vigia falló"
|
||||
# CONTRATO DE CAPACIDADES DEL KERNEL (SDD 25 §4.ter). Mismo cable que el vigía de fuentes y por la
|
||||
# misma razón: el gate existía y NADIE lo corría. Un kernel reconstruido sin `MEMCG` volvería a
|
||||
# pasar inadvertido, y ese fallo **no se ve del lado del desarrollo** —el kernel de esta máquina sí
|
||||
# lo trae—, sólo comprobando el artefacto. Acá el veredicto queda en docs/state/ y el `git log` lo
|
||||
# muestra solo, como el resto del khipu.
|
||||
# Se escribe por temporal y sólo se mueve si tiene contenido: `contract` sale != 0 cuando el
|
||||
# contrato NO se cumple —y ese rojo es justo lo que hay que guardar—, pero un fichero VACÍO se
|
||||
# leería como «nada que objetar», que es el fallo de CLAUDE.md §3.
|
||||
"$HAMMER" --store ./store kernel contract --sealed > work/.kernel-contract.tmp 2>&1
|
||||
if [ -s work/.kernel-contract.tmp ]; then
|
||||
mv work/.kernel-contract.tmp docs/state/kernel-contract.txt
|
||||
echo " kernel-contract.txt ✓ $(grep -m1 '^resumen' docs/state/kernel-contract.txt || echo '(sin resumen)')"
|
||||
else
|
||||
rm -f work/.kernel-contract.tmp
|
||||
echo " ⚠ kernel contract no produjo salida — NO piso el veredicto anterior"
|
||||
fi
|
||||
else
|
||||
echo " ⚠ sin binario hammer en $HAMMER — no regenero estado"
|
||||
fi
|
||||
@@ -193,7 +209,7 @@ fi
|
||||
# 4. Commitear SÓLO el estado firme (el avance que el humano sigue). Recetas nuevas que YO autoré se
|
||||
# commitean aparte, a mano, para no meter autoría a medias en un commit de cron.
|
||||
if [ "${NO_COMMIT:-}" != "1" ]; then
|
||||
git add docs/state/build-state.json docs/state/build-state-kde.json docs/state/build-state-gnome.json docs/state/build-state-cosmic.json docs/state/build-state-wlr.json docs/state/drenaje.json docs/state/fuentes-vigia.json 2>/dev/null || true
|
||||
git add docs/state/build-state.json docs/state/build-state-kde.json docs/state/build-state-gnome.json docs/state/build-state-cosmic.json docs/state/build-state-wlr.json docs/state/drenaje.json docs/state/fuentes-vigia.json docs/state/kernel-contract.txt 2>/dev/null || true
|
||||
if ! git diff --cached --quiet 2>/dev/null; then
|
||||
git commit -q -m "estado: cosecha granja $(ts) — avance del árbol KDE" 2>/dev/null \
|
||||
&& { git push -q origin main 2>/dev/null && echo "==> estado commiteado+pusheado" \
|
||||
|
||||
Reference in New Issue
Block a user