ia: el modelo de embeddings entra como DESCARGA OPCIONAL, y el navegador dice cómo conseguirlo

Decisión del usuario. El motor (199 M) y el modelo de chat (1,04 GiB) van en las cuatro imágenes
porque la barra lateral está en las cuatro; el de embeddings (610 MiB) no, porque es para una función
—preguntarle al archivo por significado— que no todo el mundo usa.

Y «opcional» no significa «lo armás vos»: el modelo ya es receta del corpus, así que la maquinaria de
la Etapa F lo vuelve paquete sin trabajo extra. Publicado en `dist/repo` con su `expected_hash`
anclado, junto con las deps que `install` necesita para reproducirlo — `llama-cpp` faltaba en el
catálogo, y sin ella el paquete no se puede instalar aunque exista. De paso entraron nftables, libmnl
y libnftnl, que tampoco estaban.

⚠ Tres de esos paquetes se habían publicado con el ancla de sanidad por default (`/usr/bin/<nombre>`),
que en una librería o en un modelo NO EXISTE: `install` habría fallado al verificar. Re-empaquetadas
con su ancla de verdad (`/usr/bin/llama-server`, `/usr/sbin/nft`, `/usr/lib/libmnl.so.0`…).

Lo que hace que esto sea opcional de verdad es una línea: la receta NO está declarada en ningún
perfil. Está escrito en el SDD para que nadie lo «arregle» agregándola.

Y la mitad que separa «opcional» de «invisible»: con el modelo ausente el host ya no dice sólo «no
está» sino cómo conseguirlo — «es una descarga opcional — instalalo con `takana install
ia-modelo-embeddings`». Medido en el control negativo del guardián.
This commit is contained in:
Sergio
2026-09-12 11:29:31 +00:00
parent d4d120a079
commit ec1d43efbf
3 changed files with 39 additions and 5 deletions
+30
View File
@@ -737,6 +737,36 @@ leyó—. Encadenadas como navegación de verdad (cada página lleva a la siguie
refresh`), las tres entran. De paso: las dos páginas de tránsito van **sin texto visible**, así el
archivo las descarta y la evidencia no lista dos coincidencias sin título.
#### 6.3.quinquies El modelo de embeddings es una DESCARGA OPCIONAL, no parte de la imagen (2026-09-12)
Decisión del usuario, y la que corresponde a los números: el motor (199 M) y el modelo de chat
(1,04 GiB) van en las cuatro imágenes de escritorio porque la barra lateral está en las cuatro; el
modelo de embeddings **no**, porque son 610 MiB más para una función —preguntarle al archivo por
significado— que no todo el mundo usa.
**Y «opcional» no significa «lo armás vos».** El modelo ya es una receta del corpus, así que la
maquinaria de la Etapa F lo convierte en paquete sin trabajo extra: `scripts/build-repo.sh` empaqueta
**todas** las recetas, y el catálogo queda con su `expected_hash` anclado y sus deps declaradas
(`llama-cpp`, `curl`, `busybox` — publicadas también, que si no `install` no puede reproducirlo).
```
takana install ia-modelo-embeddings --repo <dir|url>
```
Lo que hace que esto sea opcional **de verdad** es una sola línea: la receta **no está declarada en
ningún perfil**. Eso es una decisión, no un olvido, y está escrito acá para que nadie la «arregle»
agregándola.
**Y la mitad que separa «opcional» de «invisible»**: cuando el modelo falta, el host ya no dice
sólo «no está» — dice **cómo conseguirlo**. Con el modelo ausente, la ausencia es el caso NORMAL, no
un error de instalación, y un mensaje sin siguiente paso deja al usuario mirando una función que no
sabe que existe:
```
no hay modelo de embeddings en /usr/share/takana/ia/embeddings.gguf: es una descarga opcional
— instalalo con `takana install ia-modelo-embeddings`
```
#### 6.3.quater El modelo que elegimos NO SERVÍA, y el síntoma no se parecía a la causa (2026-09-12)
Esto es la unidad de trabajo más caras de esta tanda y vale escribirla entera, porque la clase de