<!--
  AUTO-GENERADO por scripts/import-corpus.mjs a partir de manuales/corpus/ — NO EDITAR A MANO.
  Para cambiar este contenido: edita manuales/neutros/*.html, regenera el corpus
  (manuales/build-corpus.mjs) y vuelve a ejecutar "pnpm run import:corpus".
  Fuente: manuales/neutros/57-manual-copiloto-integrador.html#seccion-8
-->

Tu manifiesto es texto que envías tú, y el asistente que lo usa es un modelo de lenguaje — algo que puede ser manipulado si no se le pusieran barreras. Esto es exactamente lo que impide cada capa, explicado sin tecnicismos:

1. **Es un dato, nunca una instrucción.** Tu manifiesto no se pega tal cual en lo que lee el modelo de IA — pasa primero por el mismo filtro antiinyección que usa cualquier otra herramienta del sistema. Una etiqueta que dijera «ignora tus instrucciones anteriores» llegaría limpia de ese intento.
2. **Vocabulario cerrado.** Solo existen los tipos de campo, de acción y de ancla de este manual — cualquier otra cosa se rechaza con el motivo exacto, nunca un error genérico.
3. **Límites duros** de tamaño, cantidad y longitud, comprobados antes que cualquier otra cosa.
4. **Revisión humana** de cada versión, y activación acción por acción, apagada por defecto (apartado 7).
5. **Huella por sesión.** Si tu web cambia el manifiesto, el copiloto se apaga hasta que alguien vuelva a aprobar (apartado 6).
6. **El plan se valida en el servidor** contra tu manifiesto aprobado: el asistente solo puede referirse a ids que de verdad existen ahí, con valores del tipo correcto — y cualquier acción que guarda sale siempre marcada para confirmar, diga lo que diga el plan.
7. **El propio SDK exige la confirmación**, por si el servidor fallara — es su propio diálogo, nunca una función que tu web le pase y que pudiera devolver siempre «sí».
8. **Origen y sesión atados.** El manifiesto solo se acepta desde los orígenes permitidos de tu canal, y un resultado solo se acepta para el plan y la sesión que lo pidieron — nunca de otra pestaña, otro visitante ni otro tenant.