Lectura ejecutiva · ~60 segundos
La especificación, el contrato API, la prueba, la cobertura y la evaluación responden a diferentes preguntas. Un canal verificable vincula cada propiedad con el subject, el mecanismo, la evidencia y la decisión que el resultado puede revelar; La proximidad entre controles no crea equivalencia semántica.
Los equipos que adoptan la IA aprenden rápidamente a solicitar pruebas antes de aceptar un cambio. El problema comienza cuando evidencia dispar se comprime en una sola palabra: “verde”. La suite pasó, la cobertura aumentó, el contrato existe, el esquema es válido y la evaluación ha mejorado. Por tanto, se concluye que el sistema es correcto.
Esta conclusión no sigue las premisas. Cada mecanismo responde a una pregunta diferente. Cuando tratamos la proximidad en el proceso como una equivalencia semántica, construimos un hermoso tablero para una certeza que nunca se produjo.
Basado en especificaciones no significa escribir una especificación y confiar en ella. Significa mantener una cadena rastreable entre intención, propiedades, mecanismos de verificación, evidencia y decisión de aceptación.
Resumen ejecutivo
una descripción API abierta explica cómo los consumidores y las herramientas pueden entender una interfaz HTTP; un diff de compatibilidad busca cambios estructurales; una prueba ejecutada observa el comportamiento; una métrica de cobertura indica qué se ejerció; y una evaluación mide una propiedad de comportamiento bajo un conjunto de tareas y graders. Son capas complementarias, no sustitutas. [API31-C1]
Incluso dentro de una sola capa existen límites. oasdiff documenta la comparación de OpenAPI 3.1 y las reglas de cambio, pero un diff verde no certifica la compatibilidad empresarial. El porcentaje de cobertura, a su vez, no acredita la pertinencia de las pruebas, la corrección ni la cobertura de riesgos. [API31-C2] [API31-C4]
El diseño responsable comienza con una simple pregunta: ¿Qué propiedad este verde realmente autoriza a afirmar? La respuesta debe ser explícita antes de que se ejecute el proceso.
Cinco mecanismos, cinco preguntas
| Mecanismo | Pregunta que responde | No autoriza la finalización |
|---|---|---|
| Especificaciones | ¿Se ha declarado el comportamiento deseado? | que la implementación cumpla |
| Acuerdo API | ¿La interfaz está versionada y es comprensible? | que la regla de negocio es correcta |
| prueba | ¿La ejecución de este ejemplo produjo el resultado esperado? | que todos los riesgos han sido cubiertos |
| Cobertura | ¿Qué partes se ejercitaron? | que las pruebas sean pertinentes o suficientes |
| eval | ¿Cómo se comportó el sistema en este banco, grader y entorno? | ese comportamiento se generaliza universalmente |
La tabla no crea una jerarquía fija. En una biblioteca pura, las pruebas unitarias y por contrato pueden ser el centro. En un agente que cambia datos, la política, el sandbox, la evaluación y la observabilidad pueden ser más importantes. La composición depende del riesgo.
Comience con la propiedad, no con la herramienta
"Agregar evaluación" no es un requisito verificable. “En cien escenarios representativos, el agente nunca envía un mensaje sin un consentimiento válido y cada intento bloqueado genera evidencia atribuible” es una propiedad candidata.
Para cada propiedad, registre:
- subject — qué versión del sistema se está examinando;
- estímulo — tarea, aportaciones y entorno;
- oráculo — quién o qué decide el resultado;
- límite — qué condición debe cumplirse;
- evidencia — donde se pueda inspeccionar el resultado inmutable;
- autoridad — qué decisión puede emitir el verde.
Sin subject, un informe puede pertenecer a un commit incorrecto. Sin un oráculo, el resultado se convierte en opinión. Sin límite, cualquier número puede considerarse una mejora. Sin autoridad, el verde existe pero nadie sabe qué desbloquea.
OpenAPI es descripción; la compatibilidad es una decisión más importante
La especificación OpenAPI define una descripción de interfaz independiente del idioma para que las personas y las computadoras comprendan las capacidades de un servicio. Esto reduce la ambigüedad en la integración, pero no incluye toda la semántica empresarial.
Considere un campo limite_aprovado que sigue siendo numérico y obligatorio. La API puede seguir siendo estructuralmente compatible mientras un cambio de unidad, política o redondeo interrumpe la operación. El diff estructural merece quedar verde; la prueba del invariant de negocio merece fallar. Son resultados coherentes porque examinan propiedades diferentes.
El error no está en la herramienta. Se trata de presentar “sin cambios importantes” como “sin impacto”.
La cobertura es un mapa, no un veredicto
La cobertura muestra las áreas visitadas durante la carrera. Ayuda a localizar el silencio: ramas nunca ejercidas, módulos olvidados, deltas no probados. Pero una línea ejecutada puede estar mal revisada; una prueba puede reproducir la implementación en lugar del requisito; un caso crítico puede representar una pequeña fracción del código.
En FORGE, la lectura útil separa al menos línea, rama, alcance, delta y umbral. Aún así, estos campos son señales de prueba, no de riesgo resuelto. [API31-C4]
Para no convertir el porcentaje en teatro:
- vincular escenarios críticos con las propiedades que protegen;
- utilizar la cobertura para descubrir lagunas, no para declarar corrección;
- tratar el código nuevo y el alto riesgo de manera diferente a como lo hacía históricamente;
- Exigir evidencia de la prueba que falla cuando se viola la propiedad.
Eval es un experimento versionado
Una evaluación necesita un banco de tareas, un entorno, una configuración del sistema, un evaluador, una regla de agregación y una línea de base. Cambiar cualquiera de estos elementos cambia el experimento.
Un número agregado puede ocultar clases de fracaso. Un agente puede mejorar la media y empeorar los casos irreversibles. Un evaluador modelo puede preferir el estilo y pasar por alto hechos. Un punto de referencia puede contener tareas rotas. Por tanto, eval no es una medalla; es una infraestructura de decisión.
El panel mínimo registra:
| campo | Ejemplo |
|---|---|
| banco | 120 tareas versionadas por dominio y riesgo |
| Medio ambiente | herramientas, datos sintéticos y políticas disponibles |
| Sistema | modelo, prompt, harness y commit |
| Graders | revisión humana determinista, modelo y muestra |
| Métricas | Éxito por clase, fallo crítico, coste y latencia. |
| decisión | promover, sombra, corregir o bloquear |
La prueba más importante: violar la propiedad.
Un gate sólo demuestra resistencia cuando la condición prohibida hace que falle. Antes de confiar en la tubería, realice un caso negativo deliberado:
- eliminar un campo obligatorio y confirmar el fracaso del contrato;
- introducir un cambio incompatible y confirmar el diff;
- eliminar la prueba de una rama crítica y observar la cobertura;
- hacer que el agente intente superar una autoridad y confirmar el bloqueo;
- cambiar el subject de la evidencia y confirmar que la vinculación falla.
El caso negativo distingue el mecanismo ejecutable de la documentación aspiracional.
Una matriz de evidencia para las relaciones públicas
| Propiedad | Mecanismo | evidencia | Límite | decisión |
|---|---|---|---|---|
| La interfaz no pierde el campo obligatorio. | diff de contrato | informe vinculado al digest de especificaciones | ruptura cero clasificada como bloqueo | fusión bloqueada |
| la regla calcula el valor correcto | pruebas de ejemplo y propiedades | suite vinculada para commit | todos los invariantes críticos pasan | fusión liberada |
| El comportamiento del agente preserva la política. | evaluación + casos contradictorios | resultados por tarea y trace | cero acciones externas sin grant | promoción bloqueada |
| la regresión no vuelve | prueba negativa | El caso reproduce el fallo anterior. | rojo antes, verde después | incidente terminable |
No es necesario que la matriz cubra cada línea de productos. Debe cubrir las propiedades que respaldan la decisión que se está tomando.
Lo que este artículo prueba y lo que no prueba
FORGE fuentes y contratos admiten la separación de descripción, diff, ejecución, cobertura y evaluación. No definen una receta universal para herramientas, umbrales o número de pruebas. Un producto regulado y un prototipo interno necesitan perfiles diferentes.
Tampoco existe independencia automática porque un segundo modelo evaluó el primero. Si ambos comparten contexto, incentivo, error o autoridad, hay separación de llamadas, no necesariamente separación de control.
Conclusión
Basado en especificaciones es una disciplina de trazabilidad, no una etiqueta.
Una especificación declara intención. Un contrato estructura una interfaz. Una prueba analiza ejemplos. La cobertura revela áreas ejercitadas. Una evaluación mide el comportamiento en un experimento. Cuando cada verde mantiene su pregunta, su subject y su límite, el grupo puede apoyar una decisión defendible.
Cuando todos vieron "CI aprobado", el sistema pierde exactamente la precisión que se suponía que debía crear la ingeniería.
Lectura anterior: harness de ingeniería en la práctica.. Próxima lectura: *Autonomía proporcional al riesgo*, el 18/08 en Trustyu Forge.
Nota editorial y de responsabilidad
- Corte de la investigación
- Última revisión
- Correcciones registradas
- No hay correcciones registradas.
Este artículo combina fuentes citadas, análisis y experiencia profesional del autor. Los datos verificables y las afirmaciones fácticas están vinculados a sus respectivas fuentes. Las interpretaciones, hipótesis, proyecciones, recomendaciones y opiniones representan el punto de vista profesional del autor en el momento de la publicación; no constituyen hechos probados, promesas de resultados ni asesoramiento jurídico, financiero o técnico aplicable a un caso concreto. Consulte las fuentes originales y a profesionales cualificados antes de tomar decisiones.
Claims y fuentes
API31-C1
Una descripción de API versionada, un diff de compatibilidad y una especificación de solicitud ejecutada son capas de evidencia separadas; FORGE debe mantenerlas diferenciadas y vincular cada resultado a la misma versión del contrato.
Límite: La ingesta positiva seleccionada cubre los artefactos de esquema y repositorio oficial AsyncAPI 3.1.0, no la especificación normativa/asyncapi.md fuente de verdad. OpenAPI 3.1.2 también sigue siendo un candidato no admitido por la política de recuperación v1, por lo que esta claim no afirma conformidad ni con AsyncAPI ni con OpenAPI. Esta es una intake de diseño source-bound; no prueba la adopción del producto, la madurez operativa, la attestation independiente, la clasificación de búsqueda, la citación de IA o el resultado.
- Iniciativa AsyncAPI — Iniciativa AsyncAPI, Apache-2.0
- Iniciativa AsyncAPI — Iniciativa AsyncAPI, Apache-2.0
- oasdiff — oasdiff, Apache-2.0
- rswag —rswag, MIT
API31-C2
oasdiff v1.27.0 documentos OpenAPI 3.1 reglas de comparación y cambios importantes; Este es un control de CI útil, no una prueba de compatibilidad semántica o comercial.
Límite: Esta claim describe únicamente oasdiff. La cobertura de reglas puede quedar rezagada respecto de una especificación o no detectar invariantes de dominio, y un diff verde no puede certificar la compatibilidad de negocio. Este es un input de diseño source-bound; no prueba la adopción del producto, la madurez operativa, la attestation independiente, el ranking de búsqueda, la citación por IA ni el outcome.
API31-C4
FORGE la evidencia de cobertura debe ser neutral respecto de las herramientas y normalizar al menos los campos de línea, rama, alcance, delta y umbral; SimpleCov y coverage.py siguen siendo adaptadores de idiomas, mientras que un informe de intercambio no es un veredicto de calidad.
Límite: El esquema FORGE normalizado exacto sigue siendo una decisión marco. El porcentaje de cobertura no puede demostrar la relevancia de la prueba, su corrección, la cobertura de riesgos o la ausencia de defectos. Este es un input de diseño source-bound; no prueba la adopción del producto, la madurez operativa, la attestation independiente, la clasificación de búsqueda, la citación de IA o el resultado.
- rubí — Ruby, Cláusula-de-licencia-o-BSD-2 de Ruby
- SimpleCov —SimpleCov, MIT
- coverage.py — coverage.py, Apache-2.0
- GitHub — GitHub, CC-BY-4.0
- Cobertura — Ático, GPL-2.0