Prove It
Establezca una afirmación concreta: la misma prueba detecta el comportamiento defectuoso especificado antes de una reparación y pasa después de ella. Una suite que pase por sí sola no establece esto.
Elija el testigo
Inspeccione la corrección y la prueba relevante. Identifique la entrada/salida esperada o la transición de estado, y seleccione exactamente un nodo pytest. Utilice dos referencias Git locales confirmadas; la referencia posterior debe contener tanto la corrección como la prueba. No se incluyen ediciones no confirmadas. No confirme el trabajo de otra persona solo para ejecutar esta herramienta.
La aserción del defecto necesita un mensaje específico, como:
assert expired(now=10, deadline=10), "PROVEIT:expiry-boundary"
El mensaje debe estar en una aserción dentro de la función de prueba seleccionada. No lo coloque en aserciones no relacionadas, en un fixture, en código de aplicación o en una instrucción print. Inspeccione que esta aserción realmente observe el comportamiento descrito por el error. Si la prueba existente necesita un mensaje, agréguelo solo dentro del alcance de edición autorizado e incluya esa prueba en la revisión posterior. De lo contrario, explique la entrada faltante.
Ejecute la comparación
Ejecute el script incluido usando su ruta absoluta instalada. El intérprete seleccionado necesita pytest y las dependencias del proyecto ya instaladas. No se realiza instalación de dependencias, acceso a red, checkout de Git, reset, stash o commit.
python <directorio-skill>/scripts/proveit.py --repo <repositorio> --before <ref-antigua> --after <ref-corregida> --test tests/test_expiry.py::test_at_deadline --expect PROVEIT:expiry-boundary --output <nuevo-directorio-fuera-del-repositorio>
El ejecutor superpone el archivo de prueba seleccionado de la revisión posterior en ambas instantáneas, utiliza una copia nueva por intento y, por defecto, realiza tres ejecuciones por revisión con un tiempo de espera de 10 segundos por ejecución. Use --python, --repeat 2..5 o --timeout solo según lo necesite la tarea. Seleccione un ID de parámetro completo si la prueba está parametrizada.
Las instantáneas aíslan archivos, no la ejecución. Ejecute solo código cuya ejecución ya esté autorizada en este entorno. Las pruebas conservan el acceso del usuario al sistema de archivos, la red y las credenciales. No interprete un directorio temporal como una caja de seguridad. Nunca limpie worktrees o directorios no relacionados. El ejecutor elimina solo sus propias instantáneas temporales y deja el directorio de evidencia para su revisión.
Revise la evidencia
Lea report.md, report.json, selected-test.py, fix.diff y los registros relevantes. Verifique la aserción observada, el nodo seleccionado, los registros de fase y las rutas cambiadas.
| Resultado | Interpretación | Salida |
|---|---|---|
supported | Cada ejecución antigua alcanza la aserción declarada; cada ejecución nueva pasa. | 0 |
not_supported | La prueba antigua también pasa, o la revisión reparada aún alcanza esa aserción. | 1 |
inconclusive | Entorno, fallo no relacionado, tiempo de espera, salto, ejecución incompleta o inestable. | 2 |
Un fallo de llamada no relacionado es inconcluso incluso cuando la nueva revisión pasa. Los fallos de recolección, dependencia, sintaxis, configuración y desmontaje nunca son un testigo. No los reetiquete como un error detectado. Resuelva la causa observada dentro del alcance y vuelva a ejecutar en un nuevo directorio de evidencia; no repita una configuración fallida sin cambios.
Antes de aceptar supported, inspeccione los fixtures/configuration específicos de la revisión y confirme que no explican el cambio. Solo el archivo de prueba elegido se superpone. Las dependencias instaladas se comparten, la carga automática de plugins pytest de terceros está deshabilitada y los addopts del proyecto se limpian. Los proyectos que requieren plugins externos o compilaciones pueden necesitar un entorno preparado por separado; informe la ejecución no soportada de manera clara.
Reporte la prueba, las referencias, el resultado, la ubicación de la evidencia y las limitaciones materiales. Diga que este testigo detectó el comportamiento especificado en estas ejecuciones. No afirme una prueba de corrección general, ausencia de inestabilidad, calidad general de la prueba o mejora de productividad medida. No publique informes que contengan rutas locales o registros sin revisarlos y obtener la autorización de publicación aplicable.