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.