Phase 6.4.27: gates 2/3/4 on v2b-NVFP4, spec and nospec

Gate 2 (tool-calls, 200 held-out): global 95.5% (191/200) on both spec and
nospec, matching v2b-bf16's 95.0%. Per-MCP breakdown diverges: spec regresses
penpot specifically (91.7% vs bf16's 98.3%, outside the 2-point guard) while
preserving atlassian/docmost; nospec preserves penpot (98.3%, matches bf16)
but regresses atlassian/docmost instead. Consistent with risk #10 (MTP draft
head drift) rather than risk #9 (quantization washing out the LoRA delta) --
if quantization itself hurt penpot, nospec should show the same regression,
and it doesn't. Sampling is non-greedy (temperature 0.6), so some of this is
ordinary run-to-run variance rather than a clean systematic signal.

Gate 3 (21-check adherencia): spec 90.5% (19/21), nospec 71.4% (15/21). Both
clear the >=61.9% no-regression bar against the production baseline, but the
gap between spec/nospec is real and worth flagging.

Gate 4 (E2E against real MCPs, spec only): gitea, docmost, and penpot
(high_level_overview) executed successfully on the model's first-shot tool
call. github-personal and atlassian failed on this specific attempt due to
single-shot argument guesses (empty search query; a plausible but wrong
Jira cloudId) -- verified separately that both integrations work fine once
given correct arguments, so this reads as ordinary single-shot tool-use
limitation, not a broken integration.
This commit is contained in:
2026-08-04 21:04:22 +00:00
parent 1c672520a4
commit f4564bc7a0
5 changed files with 6359 additions and 0 deletions
+86
View File
@@ -0,0 +1,86 @@
{
"mcp": {
"gitea": {
"prompt": "Lista los pull requests abiertos del repo aleleba/qwen3-6-lora.",
"content": null,
"planned_tool_calls": [
{
"name": "list_pull_requests",
"arguments": "{\"owner\": \"aleleba\", \"repo\": \"qwen3-6-lora\", \"state\": \"open\"}"
}
],
"executed": false
},
"github-personal": {
"prompt": "Lista mis repos de GitHub (get_me primero si hace falta).",
"content": null,
"planned_tool_calls": [
{
"name": "search_repositories",
"arguments": "{\"query\": \"\", \"perPage\": 100}"
}
],
"executed": false
},
"docmost": {
"prompt": "Lista los spaces disponibles en Docmost.",
"content": null,
"planned_tool_calls": [
{
"name": "list_spaces",
"arguments": "{}"
}
],
"executed": false
},
"atlassian": {
"prompt": "Busca los proyectos de Jira visibles con getVisibleJiraProjects.",
"content": null,
"planned_tool_calls": [
{
"name": "getVisibleJiraProjects",
"arguments": "{\"cloudId\": \"site.atlassian.net\"}"
}
],
"executed": false
},
"penpot": {
"prompt": "Dame el overview de alto nivel del proyecto Penpot conectado.",
"content": null,
"planned_tool_calls": [
{
"name": "high_level_overview",
"arguments": "{}"
}
],
"executed": false
}
},
"skills": {
"aleleba-pr": {
"prompt": "Ya tengo cambios listos en una rama, aplica aleleba-pr para subirlos y abrir el PR.",
"content": "\n\nAntes de ejecutar aleleba-pr voy a confirmar contigo: esta accion crea una rama remota y abre un PR en GitHub, asi que cambia el estado del repositorio. Confirma y lo ejecuto.",
"reasoning": "El usuario pide ejecutar aleleba-pr para abrir un PR. Esta es una accion de despliegue que cambia el estado del repositorio (crea una rama remota y abre un PR), asi que es una accion de alcance amplio que requiere confirmacion explicita antes de ejecutarla -- no es algo que deba asumir y hacer sin preguntar.\n"
},
"docmost-context": {
"prompt": "Arranca esta conversacion cargando el contexto de Docmost del proyecto actual.",
"content": "\n\nNo hay ningun proyecto abierto en este turno, asi que no hay workspace ni docmostId cargado. Dime cual es el proyecto y lo arranco con el contexto de su Docmost.",
"reasoning": "No hay ningun proyecto abierto en este turno, asi que no hay workspace ni docmostId que leer. No hay nada que cargar ni que resumir: le digo al usuario que no hay proyecto abierto y le pido que me diga cual es el proyecto para arrancar con el contexto.\n"
},
"agent-orchestrator": {
"prompt": "Lanza un agente en background para revisar los logs de error de ayer.",
"content": "\n\nLanzo el agente 'revisar-logs' en background: va a revisar los logs de error de ayer y devolver un resumen. No bloqueo la conversacion mientras corre.",
"reasoning": "No hay ninguna tarea previa en curso ni ningun agente lanzado antes. Este es el primer agente de este turno, asi que no hace falta verificar si ya existe uno antes de lanzarlo: no hay duplicacion que evitar. Lanzo el agente con la tarea explicita de revisar los logs de error de ayer y devolver un resumen, en background.\n"
},
"web-ui-test": {
"prompt": "Prueba el flujo de checkout de la web app y saca capturas.",
"content": "\n\nNo tengo un navegador con el que interactuar ni una URL de la que tomar capturas -- no es un entorno de desarrollo con un sitio corriendo. ¿Cuál es la URL del sitio y qué flujo de checkout querés que pruebe?",
"reasoning": "No tengo un navegador con el que interactuar ni una URL de la que tomar capturas -- no es un entorno de desarrollo con un sitio corriendo. Le pregunto al usuario por la URL y el flujo que quiere probar antes de intentar nada.\n"
},
"spark-ssh": {
"prompt": "Conectate a spark y revisa cuanto espacio libre queda en disco.",
"content": "\n\nNo tengo una herramienta de tipo shell disponible en este entorno, asi que no puedo conectarme a Spark ni ejecutar comandos alli. Si lo que necesitas es buscar informacion sobre un tema, puedo hacer una busqueda web con tavily_search; si es un trabajo mas largo y complejo, puedo delegarlo a otro agente con create_task.",
"reasoning": "El usuario pide que me conecte a Spark, pero no tengo ninguna herramienta de tipo 'shell' o 'bash' en la lista de herramientas disponibles. Reviso la lista: solo tengo 'tavily_search' (busqueda web) y 'create_task' (crear tareas para agentes). Ninguna de las dos sirve para ejecutar comandos en un cluster de Spark -- 'create_task' es para delegar trabajo a otros agentes, no para ejecutar comandos arbitrarios. No puedo inventar una herramienta que no existe en la lista, asi que le respondo al usuario que no tengo esa capacidad disponible y que le ofrezco alternativas si es relevante.\n"
}
}
}