diff --git a/scripts/servidor/claude-caja.sh b/scripts/servidor/claude-caja.sh index 7d871573..8d82f1e2 100755 --- a/scripts/servidor/claude-caja.sh +++ b/scripts/servidor/claude-caja.sh @@ -13,13 +13,14 @@ # falta: `qorpa run` levanta la jaula con user namespaces y anda **sin privilegio**, siempre que el # directorio de la instancia sea del usuario. # -# ⚠ LOS BUILDS SIGUEN SIN CORRER DENTRO DE LA JAULA, pero el motivo cambió y conviene tenerlo -# medido (2026-09-18). Antes, con `root = true`, el bwrap anidado ni se levantaba: «Can't mount proc -# on /proc». Con `root = false` **sí se levanta y /proc monta** —comprobado—, y lo que ahora falla es -# otra cosa: el anidado **no puede mapear el uid 0** que `takana build` le pide, porque `sergio` no -# tiene rango en `/etc/subuid` (sólo lo tiene `root`) y encima `newuidmap`/`newgidmap` **no son -# setuid** en esta caja (`-r-xr-xr-x`). Resultado: el sandbox del build correría como 1001 y el -# `install` que escribe `/out` con dueños se cae. +# ⚠ Y LOS BUILDS **SÍ CORREN DENTRO DE LA JAULA** — medido el 2026-09-18 por el agente de adentro, +# y corrige lo que decía este comentario. Dos recetas construidas y SELLADAS desde la jaula, con el +# hash forzado para que no hubiera caché: +# · `anew` (Go, estática) — fetch → `go mod vendor` → compile → sealed, 6,8 s +# · `lz4` (C, estática) — `make` + `make install` escribiendo `/out` → sealed, 4,4 s +# Con `root = false` el bwrap anidado se levanta y `/proc` monta. Lo que NO se probó es una receta +# cuyo `install` fije DUEÑOS: ahí sí muerde que el anidado no pueda mapear el uid 0, porque `sergio` +# no tiene rango en `/etc/subuid` (sólo lo tiene `root`) y `newuidmap`/`newgidmap` no son setuid. # # ⚠ SE INTENTÓ CERRARLO Y **NO ALCANZÓ** (2026-09-18). Se hicieron las dos cosas obvias: # · rango para `sergio` en `/etc/subuid` y `/etc/subgid` (165536:65536);