granja: el worker NO TIENE Rust ni Go — el 76% del catálogo sólo construye en el hub
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) <noreply@anthropic.com>
This commit is contained in:
@@ -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.
|
||||
|
||||
Reference in New Issue
Block a user