«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>
This commit is contained in:
@@ -3309,6 +3309,42 @@ ahí.
|
||||
- **`scripts/farm/.fleet` ausente NO es un defecto** —el propio informe lo retiró—: `flota-permanente`
|
||||
está versionado y `cosecha-cron` lo repone.
|
||||
|
||||
### 6.55 🔓 «Una sola sesión» es del KERNEL; «un solo Claude» era nuestro *(2026-09-18)*
|
||||
|
||||
El usuario chocó con `Resource busy` al abrir un segundo agente y lo llamó por su nombre: *«no quiero
|
||||
restricciones arbitrarias»*. Tiene razón en la queja y conviene separar qué es qué, porque las tres
|
||||
cosas se sienten igual desde afuera y son muy distintas:
|
||||
|
||||
**1. Lo que impone el kernel.** Dos overlays sobre el **mismo `upper`** los niega `overlayfs`, no
|
||||
nosotros: la capa mutable se corrompería. `qorpa` reintenta seis veces y después explica la causa en
|
||||
vez de dejar el error crudo de bwrap. **Eso no se toca.**
|
||||
|
||||
**2. Lo que era empaquetado nuestro** — y sí se toca: *una instancia por persona*. De ahí salía «un
|
||||
solo Claude». Instancias distintas tienen `upper` distintos y conviven sin problema. Medido: crear la
|
||||
segunda cuesta **0 s y 16 K**, porque la imagen se comparte de sólo lectura.
|
||||
|
||||
**3. Lo que era un accidente**, y se arregló al encontrarlo:
|
||||
|
||||
| | estaba | ahora |
|
||||
|---|---|---|
|
||||
| `/var/lib/hammer/qorpa/instances` | `root:root 755` ⇒ una persona **no podía crear su propia instancia** | `root:sergio 2775` (setgid) |
|
||||
| `~/.ssh` en la jaula | `ro` ⇒ `ssh` no escribe `known_hosts` | `rw` |
|
||||
| `/store` en la jaula | `ro` ⇒ el agente lee y **no puede sellar** | `rw` |
|
||||
| `claude` | abría `/opt/takana` siempre | abre `$PWD` |
|
||||
| `/usr/bin/claude` | **copia** congelada del guion | enlace al del repo |
|
||||
|
||||
⚠ **Y queda un defecto de verdad, que hoy bloquea el punto 2**: aprovisionar una instancia nueva
|
||||
muere con `bwrap: Can't mkdir parents for /run/user/0: Permission denied`. La causa está medida:
|
||||
**esta caja no tiene `/run/user`** —no hay logind— y `qorpa.rs:1542` arma la ruta del runtime dir
|
||||
como `/run/user/<uid>` sin alternativa. `XDG_RUNTIME_DIR` no alcanza: lo honra otra rama del código
|
||||
(`1244`/`1549`), no ésta. Es arreglo en el crate, no en un manifiesto.
|
||||
|
||||
> **Lo que conviene no confundir.** La jaula restringe al **agente**, no a la persona: `sergio` tiene
|
||||
> `sudo`, entra por ssh y manda en la caja entera. Y dentro de la jaula el alcance es **declarativo**
|
||||
> (D7): lo que no está en `grants` no se ve, pero agregarlo es editar un fichero, no pedir permiso.
|
||||
> Lo indefendible no es que haya límites — es que un límite **accidental** parezca de diseño, que es
|
||||
> exactamente lo que pasó con los cinco de la tabla.
|
||||
|
||||
### 6.51 🔥 Me dejé afuera de la caja — 20 minutos caída, y tres causas encadenadas *(2026-09-17)*
|
||||
|
||||
Crear una cuenta de usuario tiró el servidor de producción. Queda escrito entero porque **ninguna de
|
||||
|
||||
Reference in New Issue
Block a user