Skip to content

Fix/sala sin aislamiento no arranca - #70

Merged
ErickUser1 merged 3 commits into
mainfrom
fix/sala-sin-aislamiento-no-arranca
Sep 12, 2026
Merged

ErickUser1 merged 3 commits into
mainfrom
fix/sala-sin-aislamiento-no-arranca

Conversation

@ErickUser1

Copy link
Copy Markdown
Owner

No description provided.

ErickHub192 and others added 3 commits September 9, 2026 22:25
Sale del primer experimento: un participante con permiso para intentar romperlo
instalo Arch Linux dentro de su sala, XFCE encima, y lo expuso con un tunel de
ngrok. La regla del puerto unico cubre lo que ENTRA; un tunel marca hacia afuera,
asi que nunca le aplico.

Se anota con el porque de que el fix no sea una linea en el prompt, y con lo que
si cierra el hueco, para que no se vuelva a discutir desde cero.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01L1nFf8JaKeGedJ6RaZQYZ8
El 7 de septiembre la imagen de las salas desaparecio del servidor con el
proceso corriendo. `ensureImage` solo corria al arrancar, asi que nadie volvio a
mirar: cada `docker run` fallo, `ensureRunner` se trago el error y cayo al
runner local. Las 62 salas de un experimento con 11 personas ejecutaron los
comandos del agente en la maquina del server, y solo se dijo en un console.error
que nadie lee. Uno de los participantes acabo con un Arch Linux y un escritorio
corriendo en el VPS.

El fallo de diez segundos no fue el problema, lo fue la decision de seguir.
Degradar de "aislado" a "sin aislar" no es como degradar de "con preview" a "sin
preview": cambia quien puede tocar que, y eso lo decide una persona, no un catch.

Eran cuatro caminos distintos al host, no uno:

- `ensureRunner` caia al runner local cuando el contenedor fallaba. Ahora lanza.
  El local queda detras de MULTI_SIN_AISLAMIENTO=1, que grita en el arranque
  igual que MULTI_TEST_MOCK, o de que no haya Docker en la maquina.
- La imagen solo se comprobaba al arrancar. Ahora se revisa antes de cada
  contenedor, con el resultado recordado para no pagar el `docker images` cada
  vez, y OLVIDADO en cuanto un `docker run` falla. Con eso solo, lo del domingo
  se habria curado en el segundo intento sin que nadie se enterara.
- El `runner` era opcional en ToolContext, asi que bash caia al host si algun
  llamador se olvidaba de pasarlo. Ahora es obligatorio y el compilador es la
  guardia: quien no tenga contenedor escribe `localRunner` con las manos.
- El dev server decidia por `container.publishedPort`, una condicion distinta a
  la del runner. Cuando divergian, el proyecto arrancaba en el host mientras el
  agente creia estar encerrado. Ahora `Runner.isolated` manda en los dos.

Y el error llega a la sala, no solo al log. Quien esta adentro lee que no se
puede ejecutar codigo, que su trabajo sigue guardado y a quien avisarle; el log
se queda con la causa y el comando para diagnosticar. El turno ni se abre, para
no dejar un commit vacio en la linea de tiempo.

La demo de aislamiento cubre ahora el caso que nadie cubria: Docker existe y el
contenedor falla. Antes usaba `localRunner` directo, asi que este bug no tenia
por donde salir.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01L1nFf8JaKeGedJ6RaZQYZ8
El id ES el control de acceso, y es legible a proposito para poder dictarlo por
telefono. Pero legible tambien es adivinable: ocho adjetivos por ocho sustantivos
por noventa numeros son 5760 combinaciones, y en el servidor ya hay 162 salas.
Uno de cada treinta y cinco intentos cae en una sala de alguien.

Con proyectos de clase es una curiosidad. Deja de serlo en cuanto alguien ponga
credenciales de verdad en el panel de Variables, que es justo para lo que existe.

La salida no son UUIDs, que romperian lo que los ids legibles protegen. Un id mas
largo conserva la forma y mueve el espacio lo suficiente.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01L1nFf8JaKeGedJ6RaZQYZ8
@ErickUser1
ErickUser1 merged commit cf463b6 into main Sep 12, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants