Canales de debug

Qué entrega el panel. Se combinan por coma:

SNAKE_ORM_DEBUG=ssr,envelope,timing

ssr · panel HTML inyectado en la respuesta

envelope · el debug en el JSON, bajo la clave snakeorm

timing · cabecera Server-Timing

sidecar · un token y su propia página en /__snake__/{token}

otel · DECLARADO y sin implementar: encenderlo no entrega nada y avisa

Umbral del asesor

Solo sugiere índices para queries más lentas que X ms (por debajo, un índice no cambia nada):

SNAKE_ORM_ADVISE_MS=10

O tipado en código: SnakeDebugConfig(advise_min_ms=25)

Qué va en config y qué en el comando

La regla: si la aplicación lo necesita para funcionar, va en config; si solo lo necesita esa invocación, va en flag.

SnakeOrmConfig · databases, debug, advise_ms, migrations_dir, language

Flags del comando: --out, --schema, --keep-underscores

--database no sobrescribe nada: ELIGE una de las conexiones que declara la config. Un nombre que no esté no se puede crear desde el comando.

En Django no se declara aparte: el CLI sube hasta manage.py, lee su DJANGO_SETTINGS_MODULE y traduce settings.DATABASES + settings.SNAKEORM al mismo objeto.

Producción

Los que entregan el SQL a quien pide —ssr, envelope y sidecar— se caen con production=True, aunque los configures. timing se queda: mide, no cuenta.

SNAKE_ORM_PRODUCTION=true

Del entorno no se adivina nada: si hay un canal de riesgo encendido y nadie lo ha declarado —ni esta variable, ni production= en el middleware, ni SnakeDebugConfig— el arranque se niega en vez de elegir un defecto.