Eval y calibración
La calibración de impact.thresholds no se hace a ojo: se mide contra un
golden set de incidentes reales pasados de la organización — cambios
que causaron daño colateral conocido. El golden vive en el repo de
despliegue (contiene diffs reales: es privado); aquí solo el formato y la
mecánica.
La eval corre el pipeline con señales puras (retrieval + co-cambios, sin juicio LLM y sin entrega): métricas reproducibles, baratas y sin depender de un adapter. No mide la calidad del juicio LLM — límite documentado.
Formato del golden set
Sección titulada «Formato del golden set»{ "thresholds": { "precision": 0.5, "recall": 0.6, "k": 10 }, "cases": [ { "name": "cambio de timeout que rompió el consumidor", "repoName": "backend-api", "diff": "diff --git a/src/api.js b/src/api.js\n…", "expectedImpacted": ["web-frontend/src/api-client.js"] } ]}thresholds: gate agregado.precision/recallen[0, 1](los que se omitan no se exigen);kes el corte del ranking (default 10).cases[].expectedImpacted: paths namespaceadosrepo/…que realmente se vieron afectados por aquel cambio.- Validación estricta: clave desconocida o valor fuera de rango = error con el path exacto.
karajan-watch eval \ --config karajan-watch.config.json \ --workspace .kjw-workspace \ --golden golden-incidents.jsonSalida: precision/recall@k por caso y agregado. Si el agregado cae por
debajo de los umbrales → FAILED y exit code 1 (usable como gate en CI
tras cambiar umbrales, embedder o versión de karajan-rag).
Métricas
Sección titulada «Métricas»precision@k= aciertos / candidatos devueltos (hastak).recall@k= aciertos / ficheros esperados.- Agregado = media simple sobre los casos.