#!/usr/bin/env bash
# Los dos modelos: que el verde tenga lo suyo y que el naranja siga intacto.
#
# La segunda mitad importa tanto como la primera. El verde es un banco de
# pruebas y el naranja es lo que el usuario usa a diario: si tocar uno estropea
# el otro, el experimento sale caro. Los cuatro parametros del naranja
# (num_ctx 4096, num_gpu 24, num_predict 300, temperature 0.4) estan medidos y
# elegidos —el num_gpu 24 deja 1540 MiB para whisper— asi que se comprueban uno
# a uno y no "existe el modelo".
#
# Se pregunta a ollama, no al .Modelfile del repo: arrancar.sh RECREA el verde
# mientras busca el techo de contexto, asi que el fichero es la intencion y
# ollama es lo que se va a cargar de verdad.

cd "$(dirname "$0")" && . ./comun.sh

titulo "El verde"

if ! ollama list 2>/dev/null | grep -q "^$MODELO"; then
    echo "  $(rojo FALLO) no existe $MODELO"
    echo "        $(gris "creado por: verde/arrancar.sh, o a mano con qwen3.5-4b-verde.Modelfile")"
    exit 1
fi
echo "  $(verde OK) $MODELO existe"; _ok=$((_ok + 1))

CTX=$(parametro "$MODELO" num_ctx)
nota "num_ctx $CTX"

# El suelo NO lo pone la tarjeta ni el tamaño del prompt: lo pone Hermes, que
# rechaza de plano cualquier modelo por debajo de 64.000 tokens
# (agent/model_metadata.py:405, comprobado en agent/agent_init.py:2656).
#
# Esta comprobacion existe porque el carril se dimensiono entero para 24576
# —lo maximo que cabia en la GPU con las 32 capas dentro— y ese numero, que
# era correcto en todo lo demas, es rechazado antes de la primera frase. En
# frio no se veia: solo salta al abrir Hermes.
mayor_que "num_ctx llega al suelo de 64k que exige Hermes" "$CTX" 63999

# 300 tokens —lo que hereda el naranja del modelo base— cortan el JSON de una
# tool call por la mitad. Es el tope escondido que casi hace concluir que el 4B
# no sabe llamar herramientas.
mayor_que "num_predict da para una tool call entera" \
    "$(parametro "$MODELO" num_predict)" 1024

# Emitir JSON no es escribir prosa: temperatura baja.
menor_que "temperature baja para emitir JSON" \
    "$(parametro "$MODELO" temperature)" 0.5

titulo "El naranja, sin tocar"

comprueba "num_ctx del naranja"       "$(parametro "$NARANJA" num_ctx)"     "4096"
comprueba "num_gpu del naranja"       "$(parametro "$NARANJA" num_gpu)"     "24"
comprueba "num_predict del naranja"   "$(parametro "$NARANJA" num_predict)" "300"
comprueba "temperature del naranja"   "$(parametro "$NARANJA" temperature)" "0.4"

# Los dos salen del mismo blob de pesos: si dejaran de compartirlo, alguien
# habria bajado un modelo distinto y las comparaciones no valdrian.
BLOB_V=$(ollama show --modelfile "$MODELO"  2>/dev/null | awk '$1=="FROM"{print $2; exit}')
BLOB_N=$(ollama show --modelfile "$NARANJA" 2>/dev/null | awk '$1=="FROM"{print $2; exit}')
comprueba "los dos carriles usan los mismos pesos" "$BLOB_V" "$BLOB_N"

resumen
