From dff8409660a656c894201be06b57d04373fd1355 Mon Sep 17 00:00:00 2001 From: sergio Date: Sat, 8 Aug 2026 17:03:55 -0400 Subject: [PATCH] =?UTF-8?q?granja:=20el=20worker=20NO=20TIENE=20Rust=20ni?= =?UTF-8?q?=20Go=20=E2=80=94=20el=2076%=20del=20cat=C3=A1logo=20s=C3=B3lo?= =?UTF-8?q?=20construye=20en=20el=20hub?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Al lanzar COSMIC, sus 30 raíces fallaron de golpe con «spawn cargo vendor: No such file». Medido: worker: cargo AUSENTE · rustc AUSENTE · go AUSENTE hub: cargo ✓ · rustc ✓ · go ✓ hammer invoca `cargo vendor` en el HOST, no dentro del sandbox — el vendoreo pasa ANTES de entrar a la caja. El worker no trae toolchain de Rust ni Go ⇒ la granja no puede construir NINGUNA receta Rust o Go: COSMIC entero, las 228 Rust del corpus y las 362 Go. **El 76% del catálogo sólo puede construirse en el hub**, que es UNA SOLA MÁQUINA — justo lo que el respaldo de ayer intentaba dejar de asumir. ESTO EXPLICA HACIA ATRÁS todos los «no construyó» de esta campaña (amp, anew, apko, atlas, bom, broot, cargo-audit, cargo-hack, git-absorb). Yo lo atribuí a «necesitan red para sus módulos» y lo escribí así en el SDD 23 y en memoria. Era falso: **falta el binario**, no la red. Y ARREGLARLO NO ROMPE LA HERMETICIDAD: cargo/go aquí son herramientas de FETCH, del mismo orden que `git` para clonar — se usan para traer y fijar deps ANTES del build, no dentro del sandbox. Instalarlos en la imagen golden no relaja el aislamiento; el build sigue ocurriendo en la caja con el árbol ya vendoreado. Es lo contrario del caso «no engordar el rootfs del worker», que habla del rootfs DEL SANDBOX. ⇒ Decisión de aprovisionamiento, no de arquitectura, y desbloquea tres cuartas partes del catálogo para la granja. Co-Authored-By: Claude Opus 5 (1M context) --- docs/23-plan-rehasheo.md | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/docs/23-plan-rehasheo.md b/docs/23-plan-rehasheo.md index 17757eed..b281f932 100644 --- a/docs/23-plan-rehasheo.md +++ b/docs/23-plan-rehasheo.md @@ -313,3 +313,41 @@ El último merece subrayado: **ADR 0012 lleva meses «pendiente sin decidir» y builds de la misma dep se pisan el árbol de `work/sources` y lo dejan a medias. Una campaña de reconstrucción masiva es exactamente el escenario que lo dispara, así que decidirlo deja de ser opcional si la etapa 4 va a correr en paralelo. + +--- + +## 9. 🧱 EL BLOQUEANTE ESTRUCTURAL DE LA GRANJA: el worker no tiene Rust ni Go + +Medido el 2026-08-08 al lanzar COSMIC: + +``` +worker: cargo AUSENTE · rustc AUSENTE · go AUSENTE +hub: cargo ✓ · rustc ✓ · go ✓ (~/.cargo/bin) +``` + +`hammer` invoca **`cargo vendor` en el HOST**, no dentro del sandbox hermético — el vendoreo pasa +antes de entrar a la caja. El worker no trae ningún toolchain de Rust ni Go, así que **la granja no +puede construir NINGUNA receta Rust o Go**: + +- **COSMIC entero** (todos los `cosmic-*` son Rust) — de ahí que 30 raíces fallaran de golpe con + `spawn cargo vendor: No such file`; +- las **228 recetas Rust** y las **362 Go** del corpus. + +O sea que **el 76% del catálogo sólo puede construirse en el hub**, que es una sola máquina — justo +lo que el respaldo del 2026-08-07 intentaba dejar de asumir. + +### Lo que esto explica hacia atrás +Todos los «no construyó» de Go/Rust en el worker durante esta campaña —`amp`, `anew`, `apko`, +`atlas`, `bom`, `broot`, `cargo-audit`, `cargo-hack`, `git-absorb`— eran **la misma causa**, y yo la +atribuí primero a «necesitan red para sus módulos». La red no tenía nada que ver: **falta el +binario**. + +### Y no rompe la hermeticidad arreglarlo +`cargo`/`go` aquí son **herramientas de FETCH**, del mismo orden que `git` para clonar un repo: se +usan para traer y fijar las deps ANTES del build, no dentro del sandbox. Instalarlos en la imagen +golden del worker no relaja el aislamiento del build — el build sigue ocurriendo en la caja con el +árbol ya vendoreado. Es exactamente lo contrario del caso «no engordar el rootfs del worker», que +habla del rootfs DEL SANDBOX. + +⇒ **Es una decisión de aprovisionamiento, no de arquitectura**, y desbloquea tres cuartas partes del +catálogo para la granja.