Commit Graph
2005 Commits
Author SHA1 Message Date
Sergio 4b757721d7 estado: cosecha granja 2026-09-19T14:01:41Z — avance del árbol KDE 2026-09-19 14:01:42 +00:00
Sergio 0d2b55685a estado: cosecha granja 2026-09-19T13:31:42Z — avance del árbol KDE 2026-09-19 13:31:42 +00:00
Sergio c434383252 estado: cosecha granja 2026-09-19T13:01:43Z — avance del árbol KDE 2026-09-19 13:01:43 +00:00
Sergio a66d2b385e estado: cosecha granja 2026-09-19T12:31:25Z — avance del árbol KDE 2026-09-19 12:31:25 +00:00
Sergio 0b1a3199f9 estado: cosecha granja 2026-09-19T12:01:22Z — avance del árbol KDE 2026-09-19 12:01:22 +00:00
Sergio b7adb08144 estado: cosecha granja 2026-09-19T11:31:39Z — avance del árbol KDE 2026-09-19 11:31:39 +00:00
Sergio de71be94ac estado: cosecha granja 2026-09-19T11:01:26Z — avance del árbol KDE 2026-09-19 11:01:26 +00:00
Sergio d10700592f estado: cosecha granja 2026-09-19T10:31:23Z — avance del árbol KDE 2026-09-19 10:31:24 +00:00
Sergio e3ef36a478 estado: cosecha granja 2026-09-19T10:01:26Z — avance del árbol KDE 2026-09-19 10:01:26 +00:00
Sergio ec850187cc estado: cosecha granja 2026-09-19T09:31:23Z — avance del árbol KDE 2026-09-19 09:31:23 +00:00
Sergio b1b8eb00ef estado: cosecha granja 2026-09-19T09:01:23Z — avance del árbol KDE 2026-09-19 09:01:23 +00:00
Sergio bc9919ae08 estado: cosecha granja 2026-09-19T08:31:24Z — avance del árbol KDE 2026-09-19 08:31:24 +00:00
Sergio d50850304c estado: cosecha granja 2026-09-19T08:01:34Z — avance del árbol KDE 2026-09-19 08:01:34 +00:00
Sergio 563e7faf2f estado: cosecha granja 2026-09-19T07:31:23Z — avance del árbol KDE 2026-09-19 07:31:23 +00:00
Sergio f71a00876b estado: cosecha granja 2026-09-19T07:01:24Z — avance del árbol KDE 2026-09-19 07:01:24 +00:00
Sergio 29f9c3fc68 estado: cosecha granja 2026-09-19T06:31:23Z — avance del árbol KDE 2026-09-19 06:31:23 +00:00
Sergio 879393d866 estado: cosecha granja 2026-09-19T06:01:26Z — avance del árbol KDE 2026-09-19 06:01:26 +00:00
Sergio cf1052b769 estado: cosecha granja 2026-09-19T05:31:24Z — avance del árbol KDE 2026-09-19 05:31:24 +00:00
Sergio 9be8bdf332 estado: cosecha granja 2026-09-19T05:01:23Z — avance del árbol KDE 2026-09-19 05:01:23 +00:00
Sergio e4e82365a1 estado: cosecha granja 2026-09-19T04:31:23Z — avance del árbol KDE 2026-09-19 04:31:24 +00:00
Sergio a52fce2452 estado: cosecha granja 2026-09-19T04:01:25Z — avance del árbol KDE 2026-09-19 04:01:25 +00:00
Sergio ccd1f5f8a1 estado: cosecha granja 2026-09-19T03:31:22Z — avance del árbol KDE 2026-09-19 03:31:22 +00:00
Sergio 8bdafd8a6f estado: cosecha granja 2026-09-19T03:01:24Z — avance del árbol KDE 2026-09-19 03:01:24 +00:00
Sergio 40e58f1151 estado: cosecha granja 2026-09-19T02:31:22Z — avance del árbol KDE 2026-09-19 02:31:22 +00:00
Sergio 145e70900d estado: cosecha granja 2026-09-19T02:01:22Z — avance del árbol KDE 2026-09-19 02:01:22 +00:00
Sergio 7870e5ae20 estado: cosecha granja 2026-09-19T01:31:22Z — avance del árbol KDE 2026-09-19 01:31:22 +00:00
Sergio 2970fd3610 estado: cosecha granja 2026-09-19T01:01:27Z — avance del árbol KDE 2026-09-19 01:01:27 +00:00
Sergio fac9f64037 estado: cosecha granja 2026-09-19T00:31:33Z — avance del árbol KDE 2026-09-19 00:31:33 +00:00
Sergio 72745a5cbc estado: cosecha granja 2026-09-19T00:01:34Z — avance del árbol KDE 2026-09-19 00:01:34 +00:00
Sergio 9abe58d460 estado: cosecha granja 2026-09-18T23:31:34Z — avance del árbol KDE 2026-09-18 23:31:34 +00:00
Sergio 9772e466d2 estado: cosecha granja 2026-09-18T23:01:27Z — avance del árbol KDE 2026-09-18 23:01:27 +00:00
Sergio baa2fb4c3c estado: cosecha granja 2026-09-18T22:31:22Z — avance del árbol KDE 2026-09-18 22:31:22 +00:00
Sergio ebcec33ed3 estado: cosecha granja 2026-09-18T22:01:23Z — avance del árbol KDE 2026-09-18 22:01:23 +00:00
Sergio cc25d90209 estado: cosecha granja 2026-09-18T21:31:32Z — avance del árbol KDE 2026-09-18 21:31:32 +00:00
Sergio 96703f4870 estado: cosecha granja 2026-09-18T21:01:44Z — avance del árbol KDE 2026-09-18 21:01:44 +00:00
Sergio 9b222a6aa3 estado: cosecha granja 2026-09-18T20:31:55Z — avance del árbol KDE 2026-09-18 20:31:55 +00:00
Sergio 317ce48c16 estado: cosecha granja 2026-09-18T20:01:41Z — avance del árbol KDE 2026-09-18 20:01:41 +00:00
Sergio 67f601305b estado: cosecha granja 2026-09-18T19:31:36Z — avance del árbol KDE 2026-09-18 19:31:36 +00:00
Sergio 990e3ecc6b estado: cosecha granja 2026-09-18T19:02:00Z — avance del árbol KDE 2026-09-18 19:02:00 +00:00
Sergio 76a0f8c399 estado: cosecha granja 2026-09-18T18:31:50Z — avance del árbol KDE 2026-09-18 18:31:50 +00:00
Sergio 27ec9caea0 ADR 0020: el experimento CORRIDO — 10 de 12 sobreviven a -ec, y el que cae tiene el artefacto BIEN
El diseño es la parte que vale: NO SELLA NADA. Modificar una receta le cambia el ArtifactHash, así
que medirlo a lo bruto habría dejado una docena de duplicados basura en un store que se respalda. En
vez de eso se inyecta `set -e` en cada fase Y un `exit 77` al final de la última: el build siempre
falla, nunca sella, y el veredicto se lee en el código de salida — 77 significa que todas las fases
corrieron enteras bajo set -e. Queda en scripts/farm/exp-ec.sh.

Muestra de 12 recetas ligeras (los pesos pesados quedan fuera por tiempo, y el sesgo va declarado):
10 sobreviven sin tocar nada, 1 se rompe, 1 inconcluso por timeout.

El que se rompe es `e2fsprogs`, y mirarlo de cerca cambia lo que significa: su ./configure aborta con
`external uuid library not found` pese a que la receta pasa --disable-libuuid, y hoy eso se traga
—comprobado: la misma receta sin set -e y con exit 77 LLEGA al 77—. Pero el artefacto que sella está
bien: 149 ficheros con e2fsck, mke2fs, los cuatro fsck.ext* y los mkfs.ext*. O sea que ahí `-ec` no
atrapa un bug: rompe una receta que funciona. Ése es el coste, y es el número que no se podía
adivinar leyendo: ~8%, unas 8 recetas sobre las 96 expuestas.

También se corrige el recuento: 96, no 89. El 89 salía de restar 142−53 dando por hecho que las 53
con `set -e` propio estaban todas dentro de las 142, y no lo estaban.

jaula-preparar suma lo que hizo falta para poder correr todo esto desde adentro: rsync/python3/jq/
cargo enlazados del store, y el cargador de musl, sin el cual python3 y cargo no arrancan en una
imagen glibc.
2026-09-18 18:17:42 +00:00
Sergio 6ce34e97d1 estado: cosecha granja 2026-09-18T18:01:52Z — avance del árbol KDE 2026-09-18 18:01:52 +00:00
Sergio 08b475ec17 ADR 0020: el corpus ya se defiende solo en 53 de las 142 — el radio de explosión son 89, no 142
Medido al construir `wtype` en la caja: su fase de install empieza con `set -e` puesto a mano por el
autor. No es la única — 53 de las 142 recetas con fase multi-comando hacen lo mismo.

Son dos datos. Uno: nadie escribe `set -e` en 53 recetas por gusto, se escribe después de que algo
selle mal, así que el default ya estaba pagándose de a una. Dos: esas 53 ya corren bajo `set -e` y
no romperían con `-ec`, o sea que la migración es sobre las 89 restantes y la muestra del
experimento sale de ahí, no de las 142.
2026-09-18 17:40:05 +00:00
Sergio cd8469e09e estado: cosecha granja 2026-09-18T17:31:27Z — avance del árbol KDE 2026-09-18 17:31:27 +00:00
SergioandClaude Opus 5 2bbfd80d93 «una sola sesión» es del kernel; «un solo Claude» era empaquetado nuestro
El usuario chocó con Resource busy al abrir un segundo agente y lo llamó por su nombre: «no quiero
restricciones arbitrarias». Conviene separar las tres cosas, porque desde afuera se sienten igual.

Del kernel: dos overlays sobre el mismo upper los niega overlayfs, no nosotros. Eso no se toca.
Nuestro: una instancia por persona, de ahí «un solo Claude» — y instancias distintas conviven; crear
la segunda cuesta 0 s y 16 K porque la imagen se comparte de sólo lectura. Accidentes, ya
corregidos: el directorio de instancias era root-only (una persona no podía crear la suya), ~/.ssh
iba ro, /store iba ro (el agente no podía sellar), claude abría /opt/takana siempre y /usr/bin/claude
era una copia congelada.

Y queda un defecto real que hoy bloquea la segunda instancia: aprovisionarla muere con «Can't mkdir
parents for /run/user/0». Medido: esta caja no tiene /run/user —no hay logind— y qorpa arma esa ruta
sin alternativa; XDG_RUNTIME_DIR no alcanza porque lo honra otra rama. Es arreglo en el crate.

La distinción que importa: la jaula restringe al agente, no a la persona —sergio tiene sudo y manda
en la caja—, y dentro de la jaula el alcance es declarativo. Lo indefendible no es que haya límites:
es que un límite accidental parezca de diseño.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-18 17:11:36 +00:00
Sergio d90dda284f estado: cosecha granja 2026-09-18T17:01:33Z — avance del árbol KDE 2026-09-18 17:01:33 +00:00
Sergio 71f5783e2a estado: cosecha granja 2026-09-18T16:31:38Z — avance del árbol KDE 2026-09-18 16:31:38 +00:00
Sergio 48a9aff129 ADR 0020: las fases corren con sh -c sin -e, y un fallo no final sella igual
Sale de construir `zsh`. El agujero es estrictamente el de los comandos NO FINALES de una fase: el
estado de salida de `sh -c` es el del último comando, así que `make … install install.info` podía
morir con `makeinfo: not found` y el artefacto sellaba con `/usr/share/info` VACÍO adentro.

Medido, no supuesto: 144 logs del worker, 88 sellados, 4 con fallo de alta señal. Clasificados uno
por uno da UN hueco real confirmado (zsh, ya reparado en 3b36e9df), uno que NO lo es (python3: ahí
takana SÍ abortó, porque el `make` era el último comando de su fase) y uno inconcluso (strace, en
logs multi-receta donde el target que falla no se puede atribuir).

Ese caso de python corrige mi propio encuadre inicial, que decía «las fases sellan con huecos
silenciosos» a secas y era demasiado amplio. Queda escrito en el ADR porque la versión amplia manda
a buscar el bug donde no está.

Exposición medida: de 943 recetas, 142 tienen fase multi-comando escrita a mano. Las ~800 restantes
NO están expuestas — usan las fases de `resolve_phases`, que encadena con `&&` y sí propaga.

La decisión (`-ec` o no) queda ABIERTA a propósito: falta el único número que importa, que es
cuántas de esas 142 dejan de sellar bajo `-ec`, y eso no se saca leyendo sino reconstruyendo.
Cambiar el default a ciegas sobre 1115 sellados es el reflejo que este repo evita.
2026-09-18 16:31:33 +00:00
SergioandClaude Opus 5 c7c2337559 el informe del agente de adentro: los cinco defectos y las tres trampas
Primer informe hecho DESDE la jaula, y vale más que cualquier inspección desde el anfitrión porque
son las cosas con las que se choca al usarla. Queda registrado qué se arregló y —lo importante—
DÓNDE vive cada arreglo: 1 y 2 en el upper, que es caché descartable, y por eso hay un guion que los
repone tras cada recreate; 3 y 5 en el manifiesto; 4 en el worker.

Del 4: se autorizó la clave de la caja, no la de root — credencial distinta y revocable. Del 5:
takana NO se compila adentro; el binario es el musl del store, y lo que fallaba es que el
target/release del anfitrión enlaza a /usr/bin/takana, que adentro es el de Arch.

Y las tres trampas de orientación que el agente reportó: el store real es /store y los runbooks dicen
./store porque están escritos para el hub; hay dos checkouts y no son intercambiables; y el .fleet
ausente no es defecto, lo repone la cosecha.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-18 16:06:58 +00:00
Sergio c4d8b68692 estado: cosecha granja 2026-09-18T16:01:37Z — avance del árbol KDE 2026-09-18 16:01:37 +00:00