Evita que ../ escape de tu directorio de archivos.
Cuando la entrada de usuario se une a una ruta de archivo sin normalización, un nombre como ../../etc/passwd escapa del directorio previsto. La IA lo escribe en cualquier función de «servir/descargar un archivo». SlopGrade lo bloquea en CI, antes del merge.
Entrada de usuario, unida directo en una ruta de archivo.
No hay una resolución-y-verificación de que la ruta final se quede dentro del directorio base, así que los segmentos ../ salen. Resolver y verificar el prefijo lo arregla — el gate bloquea la unión sin verificar.
Lo que la IA envió
Lo que sale de tu runner
Ruta, línea, clase. En un repo privado, el contenido del archivo se queda en el runner por defecto; el deep scan (heisen-slop) es una opción de pago. Audítalo con --print-payload.
Detecta → adapta → verifica. Por defecto, nada más sale.
En tu runner, sobre el diff
El cliente open source recorre la pull request y marca el patrón en local — dataflow intra-función. Por defecto, ningún código sale de la máquina.
Veredicto del servidor + gate
La huella estructural se clasifica en el servidor. Un hit duro bloquea el check en un repo privado de pago; los repos públicos se gatean gratis; el paywall falla en abierto.
Publicado inline, re-verificado en el push
El hallazgo se publica en su línea exacta. Para las pocas clases con una reescritura segura y determinista (verificación TLS desactivada, debug activo, yaml.load…), se genera Y se verifica una corrección en tu runner; si no, corriges tú y el siguiente push re-verifica.
¿Qué hace segura una unión de ruta?
Resolver la ruta y verificar que sigue empezando por el directorio base previsto (o usar un mapa fijo de nombres permitidos). El gate reconoce esa verificación y la deja pasar; la unión desnuda se marca.
¿Cubre también las subidas?
El lado escritura (zip-slip, rutas de subida sin restringir) lo cubren clases de gate adyacentes en el firewall completo; la clase de esta página es la traversía en lectura/servicio. Ver el catálogo completo para el resto.