Saltar al contenido principal

🛡️ Lo que la plataforma comprueba

Objetivo principal: saber qué siete puertas atraviesa una publicación, en qué orden, y qué significa que se pare en cada una — porque el diagnóstico que recibe el alumno depende de cuál le cerró el paso.

Las siete puertas, en orden

Puerta por puerta

1. ¿Ya tienes una versión viva de este modelo?

Se rechaza si quien publica ya tiene una versión no retirada de ese modelo. Mira la autoría, no solo el nombre.

La distinción importa en un aula: nadie coordina los nombres, y a media clase se le ocurre el mismo. Si mirara solo el nombre, el segundo alumno que quisiera llamar clima a lo suyo no podría publicar.

Va la primera porque es la más barata de comprobar.

2. El identificador lo pone el sistema

Al primero que publique clima le toca clima/1; al siguiente, clima/2. El contador nunca vuelve atrás, ni cuando una publicación se malogra: un número concedido deja un hueco y el siguiente sigue contando.

Reciclarlo reabriría la carrera entre dos publicaciones simultáneas — y dos modelos con el mismo identificador ya le costaron su publicación a un alumno una vez.

El identificador no lleva dentro quién eres

Es deliberado. Al retirar una versión se borra la autoría, y un identificador con el alumno dentro sobreviviría a su propio borrado.

3. La forma del material

Se aplica antes de mirar nada de lo que contiene y antes de construir. Se rechazan:

  • enlaces simbólicos;
  • rutas absolutas;
  • rutas que salen del árbol de la entrega al normalizarlas — a/../../b se detecta igual que ../b, comparando partes y no cadenas;
  • ocho nombres que un proyecto de alumno no necesita para nada: .git, .env, .ssh, .aws, .npmrc, .netrc, id_rsa, .git-credentials.

Lo aceptado se copia a un directorio de trabajo, de modo que la construcción solo vea material saneado en vez de confiar en que nadie toque el resto.

No inspecciona el código buscando qué hará al ejecutarse. Lo que se acota es la forma de la entrega. El umbral declarado del proyecto son accidentes y abuso casual, no un adversario con exploits.

4. La declaración de dependencias

Solo dependencias, nunca configuración de construcción. Se rechaza toda línea que empiece por guion, con su número de línea y su motivo:

Se rechazaPor qué
Opciones de índiceRedirigen de dónde se baja el material, y eso lo decide la plataforma
-r, -cArrastran otro fichero al proceso de construcción
-eInstala desde una ruta en lugar de desde una versión publicada

Devuelve todas las líneas inadmisibles de una vez. Rechazar en la primera obligaría a publicar una vez por cada línea mala.

Una declaración vacía o ausente es un caso válido.

5. La firma

Un solo argumento obligatorio, y el nombre tiene que ser predecir. Se valida cargando el código del alumno antes de construir, así que un proyecto cuya firma no encaja se rechaza sin haber gastado la construcción.

El diagnóstico llega en tres partes —qué se intentaba, qué lo provocó y qué hacer— y hay comprobaciones automáticas de que dos causas distintas no producen el mismo texto y de que ningún mensaje enseña rutas del servidor ni nada de los modelos de otros alumnos.

6. Primero el inventario

Aquí la versión ya está registrada, en estado publicándose.

7. La construcción y el arranque

Se resuelven las dependencias y se comprueba que el modelo arranca.

El fallo más frecuente del mundo real

Todo lo que el alumno escribe fuera de predecir se ejecuta al cargar, no al invocar — y cargar los pesos entrenados suele estar ahí. Por eso el archivo que no viajó con la entrega es el fallo que más aparece: el modelo se declara publicado y falla en cada invocación.

Por qué el inventario va antes que la dirección

Si el proceso se interrumpe entre los dos pasos, el único estado intermedio posible es el inofensivo: la versión registrada y todavía sin responder. La pantalla lo llama publicándose, es visible y es retirable.

El orden inverso queda prohibido, y por un motivo concreto: dejaría un modelo sirviendo peticiones del edificio sin figurar en ningún inventario — invisible para quien opera y fuera del alcance de la retirada.

La retirada usa el orden contrario, por la misma razón: primero se mata la dirección, después se marca en el inventario.